Excel VBA L oop очень рано останавливается - PullRequest
0 голосов
/ 22 января 2020

Я - высший новичок в Excel VB, но я пытаюсь создать макрос, который сравнивает ячейку рабочей книги с целыми столбцами данных ячейки и, если он находит совпадение, копирует и вставляет диапазон данных из один лист в рабочей тетради к другому с несколькими оговорками. Приведенный ниже код работает хорошо, но преждевременно останавливается (около 250 из 2000 строк) в l oop.

Код ниже

Sub copycomments()

Dim oldworkbook, newworkbook As Workbook
Set oldworkbook = Excel.Workbooks("Macro Experiment1.xlsm")
Set newworkbook = Excel.Workbooks("Macro Experiment2.xlsm")

Dim oldworksheet, newworksheet
Set ows = oldworkbook.Sheets("Sheet1")
Set nws = newworkbook.Sheets("Sheet1")

Dim oc, nc As Integer
nc = 2
oc = 2

Do While nws.Cells(nc, 5) <> ""
    Do While ows.Cells(oc, 5)
       If nws.Cells(nc, 5) = ows.Cells(oc, 5) Then
            If IsEmpty(nws.Range("T" & nc)) = True Then
                ows.Range("T" & oc & ":W" & oc).Copy _
                Destination:=nws.Range("T" & nc & ":W" & nc)
                Application.CutCopyMode = False
                Exit Do
            ElseIf IsEmpty(nws.Range("T" & nc)) = False Then
                ows.Range("W" & oc).Copy _
                Destination:=nws.Range("W" & nc)
                Application.CutCopyMode = False
                Exit Do
            End If
        End If
    oc = oc + 1
    Loop
oc = 2
nc = nc + 1
Loop

End Sub

Я подумал, что, возможно, проблема в том, что буфер необходимо очищать после каждой операции копирования и вставки, и это, похоже, улучшает производительность, но l oop все еще перестал работать после примерно 300 строк.

Любой совет с благодарностью!

1 Ответ

0 голосов
/ 23 января 2020

Спасибо за ответы! Более подробно рассмотрев причину остановки макроса, я заметил пустые поля в ows.cells, которые остановили бы l oop. Я также убрал выход do во внутреннем l oop, и макрос работал отлично. Есть пара вещей поменьше, но все основные проблемы решены. Еще раз спасибо !!!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...