У меня возникли проблемы с отладкой кода, который я написал. Он работает нормально до определенного момента, а затем останавливается и показывает: ошибка времени выполнения 1004, ошибка, определяемая приложением или объектом.
Я очень давно не писал VBA, поэтому мой код может быть беспорядочным =).
Кажется, проблема заключается в следующем: см. комментарий «Создать UID для текущего импа».
'Sheet Definitions
strSourceSheet = "MasterReport"
strComponentSheet = "UniqueIdComponents"
'defines row where data starts
intEntryCount = 2
intImpCount = 0
'determine maximum number of rows for both sheets
lngMaxRowSS = ThisWorkbook.Sheets(strSourceSheet).UsedRange.SpecialCells(xlCellTypeLastCell).Row
lngMaxRowCS = ThisWorkbook.Sheets(strComponentSheet).UsedRange.SpecialCells(xlCellTypeLastCell).Row
'Run until there are no more entries
For intEntryCount = 2 To lngMaxRowSS
'Prevents to overwrite existing UIDs
If ThisWorkbook.Sheets(strSourceSheet).Range("BP" & intEntryCount) = "" Then
'Recieve next imperative on the Source List to find according UID Components
strSourceImperative = ThisWorkbook.Sheets(strSourceSheet).Range("A" & intEntryCount)
'Run until no new Imp UID is defind
For intImpCount = 11 To lngMaxRowCS
'Location of Imps on Component Sheet
strComponentImperative = ThisWorkbook.Sheets(strComponentSheet).Range("C" & intImpCount)
' If the Source Imp = Component Imp then we create a UID for that Source IP
If strSourceImperative = strComponentImperative Then
'Assign Column to UID component in order to find the Column in the MasterReport
strUIDComponent1 = ThisWorkbook.Sheets(strComponentSheet).Range("D" & intImpCount)
strUIDComponent2 = ThisWorkbook.Sheets(strComponentSheet).Range("E" & intImpCount)
strUIDComponent3 = ThisWorkbook.Sheets(strComponentSheet).Range("F" & intImpCount)
strUIDComponent4 = ThisWorkbook.Sheets(strComponentSheet).Range("G" & intImpCount)
strUIDComponent5 = ThisWorkbook.Sheets(strComponentSheet).Range("H" & intImpCount)
strUIDComponent6 = ThisWorkbook.Sheets(strComponentSheet).Range("I" & intImpCount)
strUIDComponent7 = ThisWorkbook.Sheets(strComponentSheet).Range("J" & intImpCount)
'Generate UID for the Current Imp
strUID = ThisWorkbook.Sheets(strSourceSheet).Range(strUIDComponent1 & intEntryCount) _
& ThisWorkbook.Sheets(strSourceSheet).Range(strUIDComponent2 & intEntryCount) _
& ThisWorkbook.Sheets(strSourceSheet).Range(strUIDComponent3 & intEntryCount) _
& ThisWorkbook.Sheets(strSourceSheet).Range(strUIDComponent4 & intEntryCount) _
& ThisWorkbook.Sheets(strSourceSheet).Range(strUIDComponent5 & intEntryCount) _
& ThisWorkbook.Sheets(strSourceSheet).Range(strUIDComponent6 & intEntryCount) _
& ThisWorkbook.Sheets(strSourceSheet).Range(strUIDComponent7 & intEntryCount)
'Writes UID into MasterReport
'ThisWorkbook.Sheets(strSourceSheet).Range("BP" & intEntryCount) = strUID
'Test Writes
ThisWorkbook.Sheets("Test").Range("A" & intEntryCount) = strUID
'If the Source Imp = Component Imp then we created a UID for that Source IP
End If
'If the two Source Imp <> Component Imp, go to next row on Component sheet and compare again
Next intImpCount
'Prevented to overwrite existing UIDs
End If
Next intEntryCount
В случае, когда я получаю ошибку, компоненты A, M, N, O, BK, "", "" и количество записей равно 5718. Он отлично написал 5718 записей, а затем показывает ошибку.
Любые идеи?
Заранее спасибо за помощь!!