Я написал код VBA для пошагового выбора гиперссылок и получения данных из каждого файла.
На втором проходе через l oop (когда я запускаю макрос) я получаю err 9 - индекс вне диапазона. Когда я выполняю макрос через кнопку F8, он работает нормально.
Я выполнил отладку во время работы, и Range (x.Address) имеет правильный адрес ячейки. Если я запускаю код для строки, которая заканчивается как первая запись, она работает.
Это просто не удается на 2-й запуск.
Sub HistoricRevData()
On Error GoTo MHSErrorHandler:
Dim WB_MonthlyLoad As Object
Dim WB_ProjectSummary As Object
Dim WS_MonthSht As Object
Dim WS_PerComSht As Object
Dim WS_PriceSht As Object
Dim WS_RevSht As Object
Dim varLastCol As Integer
Dim varRowCount As Integer
'save the MonthlyLoad book as an object for easy reference
Set WB_MonthlyLoad = ActiveWorkbook
Set WS_MonthSht = ActiveSheet
Set WS_PriceSht = WB_MonthlyLoad.Sheets("Price")
Set WS_RevSht = WB_MonthlyLoad.Sheets("Revenue")
varRowCount = 2
'Open the Project Summary Report and save as object
' - Note right now this just does the single project need to loop through all
'
For Each x In Selection.Cells
If x.Value <> "" Then
Range(x.Address).Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
Worksheets("% Complete").Select
Set WB_ProjectSummary = ActiveWorkbook
Set WS_PerComSht = WB_ProjectSummary.Worksheets("% Complete")
WB_MonthlyLoad.Activate
varLastCol = WS_PerComSht.Rows(5).Find(What:="Total", LookIn:=xlFormulas).Column - 2
WS_PriceSht.Cells(varRowCount, 1).Value = WS_PerComSht.Cells(7, 1).Value
WS_PerComSht.Range(WS_PerComSht.Cells(8, 4), WS_PerComSht.Cells(8, varLastCol)).Copy
WS_PriceSht.Cells(varRowCount, 2).PasteSpecial Paste:=xlPasteValues
WS_RevSht.Cells(varRowCount, 1).Value = WS_PerComSht.Cells(7, 1).Value
WS_PerComSht.Range(WS_PerComSht.Cells(41, 4), WS_PerComSht.Cells(41, varLastCol)).Copy
WS_RevSht.Cells(varRowCount, 2).PasteSpecial Paste:=xlPasteValues
varRowCount = varRowCount + 1
End If
MHSDate:
WB_ProjectSummary.Close savechanges:=False
MHSLink:
Next x
Exit Sub
'==========================================================================================
MHSErrorHandler:
MsgBox (Err.Description & " - " & Err.Number & x.Address)
If Err.Description = "Cannot open the specified file." Then
Err.Clear
Resume MHSLink
End If
If Err.Number = 91 Then
Err.Clear
WS_MonthSht.Cells(x.Row, 6).Value = "On % Comp, Couldn't find Total Column"
Resume MHSDate
End If
'===============================================================================================
End Sub
У кого-нибудь есть идеи