Это моя логика или синтаксис, который я пишу неправильно?(если еще синтаксис) - PullRequest
0 голосов
/ 21 января 2019

Я хочу скопировать данные с одного рабочего листа на другой рабочий лист, используя цикл (for) и условие (if elseif else).Условия:

  • Если столбец E10 в wsCopy = пустой, тогда код будет зацикливаться ...
  • с условием: Если столбец B10 в wsCopy = Значение в столбце Gs в wsDestI
  • Затем скопируйте значение из столбца Gs wsDestI в столбец M wsDest
  • Иначе, если значение в столбце B10 wsCopy = пусто
  • Затем выполните условие.
  • В противном случае код будет скопирован из wsCopy в wsDest

Но код в предложении Else вызывает ошибку:

Ошибка времени выполнения '1004'

Я пытался активировать рабочий лист, но все еще застрял.Может кто-нибудь объяснить, почему мой исходный код не работает?Это моя логика или неверный синтаксис?

 For i = 1 To lCopyLastRow
    If IsEmpty(wsCopy.Range("E" & 9 + i).Value) = True Then
        For s = 4 To b
            If (wsCopy.Range("B" & 9 + i).Value = wsDestI.Range("G" & s).Value) Then
                wsDestI.Range("C" & s).copy wsDest.Range("M").End(xlUp).Offset(1, 0)
                wsDestI.Range("G" & s).copy wsDest.Range("S").End(xlUp).Offset(1, 0)
                wsDestI.Range("M" & s).copy wsDest.Range("P").End(xlUp).Offset(1, 0)
            End If
        Next s
    ElseIf IsEmpty(wsCopy.Range("B" & 9 + i).Value) = True Then
            wsCopy.Range("E" & i + 9).copy wsDest.Range("M").End(xlUp).Offset(1, 0)
            wsCopy.Range("K" & 9 + i).copy wsDest.Range("P").End(xlUp).Offset(1, 0)
            wsDest.Range("S").End(xlUp).Offset(1, 0) = "0"
    Else:
    wsCopy.Activate
    wsDest.Activate
    'this below line is error and I don't know why its error
    wsCopy.Range("E" & 9 + i).copy wsDest.Range("M").End(xlUp).Offset(1, 0)
    wsCopy.Range("B" & 9 + i).copy wsDest.Range("S").End(xlUp).Offset(1, 0)
    wsCopy.Range("K" & 9 + i).copy wsDest.Range("P").End(xlUp).Offset(1, 0)
    End If

Next i

1 Ответ

0 голосов
/ 21 января 2019

На самом деле вы получите эту ошибку в каждой строке с wsDest.Range, потому что вы не определяете номер строки для .End(xlUp), с которого начинается, следовательно, ошибка 1004.

Если вы пытаетесь найти последнюю строку в указанном столбце, попробуйте добавить & Rows.Count к диапазону, который вы пытаетесь указать.

wsDest.Range("M" & Rows.Count).End(xlUp).Offset(1, 0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...