У меня есть функция VBA в соответствии с кодом ниже:
Function stageValueVariance(stage As String, valCol As Long)
On Error Resume Next
For i = 2 To offlineHeight
If Application.VLookup(offline.ListColumns(1).Range(i).value, bce.DataBodyRange, valCol, 0) <> offline.ListColumns(valCol).Range(i).value Then
If oldOut.ListRows.Count <> 0 Then
foundID = Application.WorksheetFunction.Match(offline.ListColumns(1).Range(i), oldOut.ListColumns(1).DataBodyRange, 0)
If foundID <> 0 Then
oldOutPresent = True
End If
ElseIf valComp.ListRows.Count <> 0 Then
foundID = Application.WorksheetFunction.Match(offline.ListColumns(1).Range(i), valComp.ListColumns(1).DataBodyRange, 0)
If foundID <> 0 Then
valCompPresent = True
End If
End If
If oldOutPresent = False And valCompPresent = False Then
With stageValComp.ListRows.Add
.Range(1) = offline.ListColumns(1).Range(i)
.Range(2) = offline.ListColumns(2).Range(i)
.Range(3) = stage
.Range(4) = offline.ListColumns(7).Range(i)
.Range(5) = Application.VLookup(offline.ListColumns(1).Range(i).value, bce.DataBodyRange, valCol, 0)
.Range(6).Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:="Yes, No"
End With
End If
foundID = 0
oldOutPresent = True
valCompPresent = True
End If
Next i
End Function
И я вызываю его в макросе, используя следующее:
'find stage value variances and populate data
Call stageValueVariance("Design", 7)
Call stageValueVariance("Guides", 9)
Call stageValueVariance("Lintels", 11)
Call stageValueVariance("Install", 13)
Макрос ищет отклонения в две таблицы, а переменная valCol
задает столбец для поиска. Если найдено отклонение между offline
и bce
(две таблицы), то строка добавляется в третью таблицу - stageValComp
.
Функция также проверяет, что идентификатор этой строки еще не присутствует в двух других таблицах - oldOut
и valComp
. Все переменные объявлены на уровне Publi c и установлены в макросе, который вызывает эту функцию.
Проблема, с которой я сталкиваюсь, - это когда я открываю книгу и запускаю макрос в первый раз, затем код находит отклонение и добавляет детали к stageValComp
. Для каждой последующей попытки выполнить код отклонение не найдено. Однако, если я пошагово выполняю код с помощью F8, код работает правильно и находит отклонение.
Я никогда раньше не сталкивался с этим типом ошибок, поэтому я немного озадачен! Любая помощь будет оценена!