Я пытаюсь запустить макрос VBA, который перебирает около 67 000 строк по 100 столбцов в каждой строке. Для каждой из ячеек в этих строках значение сравнивается со столбцом с 87 записями на другом листе. При запуске кода ошибок не замечено, но Excel каждый раз вылетает. Странно то, что код работает; У меня установлено, чтобы отметить каждую строку, в которой найдено совпадение, и это происходит до сбоя. Я пытался запустить его много раз, и он пробежал от 800 до 11 000 строк перед сбоем, в зависимости от попытки.
Моим первым подозрением было переполнение памяти из-за объема вычислений, но моя система показывает загрузку ЦП на 100% и использование памяти около 50% при выполнении этого кода:
Sub Verify()
Dim codes As String
Dim field As Object
For i = 2 To Sheets("DSaudit").Rows.Count
For Each field In Sheets("Dsaudit").Range(Cells(i, 12), Cells(i, 111))
r = 1
While r <= 87
codes = ThisWorkbook.Sheets("287 Denominator CPT").Cells(r, 1).Value
If field = codes Then
Cells(i, 112).Value = "True"
r = 88
Else
r = r + 1
End If
Wend
Next field
i = i + 1
Next i
End Sub
Следует также отметить, что я все еще очень плохо знаком с VBA, поэтому, скорее всего, я совершил какую-то вопиющую ошибку новичка. Могу ли я внести некоторые изменения в этот код, чтобы избежать сбоя, или я должен отменить его и применить более эффективный подход?