У меня есть подпункт, который обнаруживает дубликаты на листе (я использую 2 цикла вокруг ключевого столбца), и еще один, который удаляет столбец, выбранный пользователем (я использую команду FullColumn.Delete). Обе подводные лодки независимы. Упрощенный код:
Первый Sub:
For i = myHeader + 1 To last_row
count = 0
For j = myHeader + 1 To last_row
If mySheet.Cells(j, 1) = mySheet.Cells(i, 1) Then
count = count + 1
If count = 2 Then
MsgBox "Duplicate"
End if
End if
Next j
Next i
Второй Sub:
ThisWorkbook.Sheets(myTable).Columns(myIndexCol).EntireColumn.Delete
Первый код выполняется очень быстро, так как в l oop всего 10 строк , Второй саб также работает нормально, удаляя выбранный столбец, как и ожидалось. Однако после выполнения второй подпрограммы, если я выполню первую подпрограмму снова, она будет работать очень медленно. Если я закрою и открою книгу, первая подпрограмма снова будет работать быстро, пока, конечно, я не выполню вторую.
Есть идеи для решения этой проблемы производительности?