Цикл Do, вложенный в цикл do while, который не компилируется в Excel VBA. - PullRequest
0 голосов
/ 08 мая 2019

Код не компилируется и показывает ошибку в цикле До. Это говорит о том, что есть цикл без дел. Есть больше кода, это и работает нормально, и у меня есть Option Explicit в верхней части модуля. Маркер неисправности помечает 2 до последнего цикла Чего мне не хватает?

Я пытался поместить код в отдельный саб я пробовал


    intLastrowData = wbold.Worksheets(OldSheetName).Cells(Rows.Count, 1).End(xlUp).Row
    intLastrowNew = WBnew.Worksheets(AktivtBlad).Cells(Rows.Count, 1).End(xlUp).Row
    i = 3
    Do While i <= intLastrowNew
        strValueA = WBnew.Cells(i, intData1).Value
        strValueB = WBnew.Cells(i, intData2).Value
        j = 2
        Do Until strValueA = wbold.Worksheets(OldSheetName).Cells(j, 1).Value
            If Not wbold.Worksheets(OldSheetName).Cells(j, 1).Value = "" Then
                If strValueA = wbold.Worksheets(OldSheetName).Cells(j, 1).Value Then
                    If strValueB = wbold.Worksheets(OldSheetName).Cells(j, 2).Value Then
                        wbold.Worksheets(OldSheetName).Range(Cells(j, 4), Cells(j, 18)).Copy
                        WBnew.Worksheets(AktivtBlad).Range(Cells(i, intData3)).Paste
                        Exit Do
                    End
                End
            End
            j = j + 1
            If intLastrowData > j - 2 Then
                Exit Do
            End
        Loop
        i = i + 1
    Loop

Я ожидаю, что он сравнит strValueA и strValueA с данными из wbold.Worksheets (OldSheetName) и, если они совпадут, скопирует данные из wbold и поместит их в WBnew. Но это не компилирует внутреннее До до цикла.

1 Ответ

1 голос
/ 08 мая 2019

Это просто: это End If, а не End.

...