Я - высший новичок в 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 строк.
Любой совет с благодарностью!