Я пишу код в Workbook0.Worksheet1, чтобы скопировать ячейку из Workbook1.WorkSheet1 в ячейку в Workbook2.Worksheet1

Вот код:

Sub CopyInfo()  
    Dim WSCopy As Worksheet  
    Dim WSPaste As Worksheet  
    Set WSCopy = Workbooks(Cells(3, 4).Value).Worksheets("Sheet1")  
    Set WSPaste = Workbooks(Cells(4, 4).Value).Worksheets("Sheet1")  
    RowCopy = Range(Cells(11, 3)).Row  
    ColCopy = Range(Cells(11, 3)).Column  
    RowPaste = Range(Cells(11, 4)).Row  
    ColPaste = Range(Cells(11, 4)).Column  
    Data = "Data"  
    While Data <> ""  
        Data = WSCopy.Cells(RowCopy, ColCopy)  
        WSPaste.Cells(RowPaste, ColPaste) = Data  
        RowCopy = RowCopy + 1  
        ColCopy = ColCopy  
        RowPaste = RowPatse  
        ColPaste = ColPaste + 1  
    Wend  
End Sub

Он отлично работает на первой итерации, на второй итерации выдает ошибку.

Надеюсь, кто-то покажет мне, где моя ошибка.

1 ответ1

3

Я предполагаю, что проблема вызвана опечаткой в вашем коде в этой строке:

RowPaste = RowPatse

Поскольку VBA не требует, чтобы вы объявляли свои переменные, он присваивает RowPaste значение нового Пустого Варианта RowPatse . Следовательно код нарушается во второй раз.

Чтобы избежать такого рода опечаток, вы можете добавить Option Explicit в начало вашего модуля. Это заставит компилятор выдавать ошибку каждый раз, когда в вашем коде вызывается необъявленная переменная.

Эта проблема в стороне, линии

ColCopy = ColCopy
RowPaste = RowPaste

можно просто удалить, потому что они абсолютно ничего не делают.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .