Мой код отлично работает в режиме отладки. Я перебираю каждую строку, и она выдает именно то, что я ожидаю. Однако, когда он работает на открытом, как я хочу, он не выполняет последние 2-3 строки должным образом. Я помещаю примечание, где это останавливается в фрагменте кода ниже. Я очень любитель программирования, поэтому, пожалуйста, простите организацию и эффективность на уровне малышей. Любые и все критические замечания или предложения приветствуются, я просто понимаю это как i go.
Private Sub Workbook_Open()
'Message asks user if they want to update
Dim Answer As VbMsgBoxResult
Answer = MsgBox("Would you like to update the part HS database for your tracker?" & vbCrLf & "(It will take a hot minute)", vbYesNo + vbDefaultButton2, "Update Part DB")
'if check for running the subroutine
If Answer = vbYes Then
''Turn off screen updating
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'Open parser
Workbooks.Open Filename:="K:\04_Classification\Broker Templates\BrokerPartsListParser.xlsb", ReadOnly:=True
'Setting Range Variables
Dim RgData As Range
Dim RgCriteria As Range
Dim RgOutput As Range
Set RgData = Workbooks("BrokerPartsListParser.xlsb").Worksheets("NewestIPExtract").Range("A1").CurrentRegion
Set RgCriteria = ThisWorkbook.Worksheets("PartDBRef").Range("J1").CurrentRegion
Set RgOutput = ThisWorkbook.Worksheets("PartDBRef").Range("A3").CurrentRegion
'Clearing previous data
RgOutput.Offset(1).ClearContents
'Doing the Advanced Filter
RgData.AdvancedFilter xlFilterCopy, RgCriteria, RgOutput
'Check to see if ACE data needs to be pulled
Dim ACEPull As Boolean: ACEPull = ThisWorkbook.Worksheets("ACE Data").Range("AO2")
If ACEPull = True Then
'setting pulled date
ThisWorkbook.Worksheets("ACE Data").Range("AK2").Value = Date
'Finding last row of old data set
Dim LastRow As Long: LastRow = ThisWorkbook.Worksheets("ACE Data").Range("AA" & Rows.Count).End(xlUp).Row
'Deleting old Data
If IsEmpty(Range("AA2").Value) = False Then
ThisWorkbook.Worksheets("ACE Data").Range("A2:AA" & LastRow).ClearContents
End If
'Setting Advanced Filter Parameters
Set RgData = Workbooks("BrokerPartsListParser.xlsb").Worksheets("Unified ACE Data").Range("A1").CurrentRegion
Set RgCriteria = ThisWorkbook.Worksheets("ACE Data").Range("AH1").CurrentRegion
Set RgOutput = ThisWorkbook.Worksheets("ACE Data").Range("A1:AA1")
'Doing the Advanced Filter
RgData.AdvancedFilter xlFilterCopy, RgCriteria, RgOutput
''THIS IS WHERE MY CODE STOPS WORKING AS I WOULD EXPECT
'Finding New Last Row
LastRow = ThisWorkbook.Worksheets("ACE Data").Range("AA" & Rows.Count).End(xlUp).Row
'Filling Formulas
If IsEmpty(Range("AA3").Value) = False Then
ThisWorkbook.Worksheets("ACE Data").Range("AB2:AD" & LastRow).FillDown
End If
End If
''close parser
Workbooks("BrokerPartsListParser.xlsb").Close SaveChanges:=False
''Turn updating back on
Application.ScreenUpdating = True
Application.DisplayAlerts = True
''Thank people for their patience
MsgBox "Part DB has been updated. Thank you for your patience :D"
Exit Sub
Else
Exit Sub
End If
End Sub