#excel #vba
#excel #vba
Вопрос:
У меня есть макрос (в основной книге), который получает данные из другой книги / рабочего листа .value2
.
Я пробовал разные изменения в коде. Я дважды проверил, что обе книги открыты. Тем не менее, я продолжаю получать Subscript out of range (Error 9)
.
Sub NielsenScorecard_DataPaste()
Dim WbNielsenScorecard As Workbook
Set WbNielsenScorecard = Workbooks("Nielsen Scorecard_Template.xlsm")
TotalUS_DataPaste
End Sub
Sub TotalUS_DataPaste()
**Subscript out of range (Error 9)**
With Workbooks("Power Query - Meijer_Walmart_Total US xAOC.xlsm").Worksheets("PQTotalUS")
Dim Data(0) As Variant
'Copy Data Range
Data(0) = .Range(.Cells(.Rows.Count, "A").End(xlUp), "AA2").Value2
End With
'Worksheet Code Name within this Workbook
With wsTotalUS
Debug.Print wsTotalUS.Name
.AutoFilter.ShowAllData
.Range("A2:AA" amp; .Cells(.Rows.Count, "A").End(xlUp).Offset(1).Row).ClearContents
With .Cells(.Rows.Count, "A").End(xlUp).Offset(1).Resize(UBound(Data(0)))
.Resize(ColumnSize:=UBound(Data(0), 2)).Value2 = Data(0)
End With
End With
End Sub
Комментарии:
1. дважды проверьте правильность написания как книги, так и рабочего листа, а также то, что целевая книга открыта.
2. Открыта ли рабочая книга «Power Query Meijer_Walmart_Total US xAOC.xlsm»?
3. @ScottCraner Я добавил экран печати рабочих книг / рабочих листов. Все открыто и написано правильно.. если я чего-то не упускаю
4. @FaneDuru Я добавил экран печати: да, «Power Query — Meijer_Walmart_Total US xAOC.xlsm» открыт
5. На вашем снимке экрана есть пробелы
PQ Total US
. В вашем коде нет. Разница между кодовым именем и именем листа.
Ответ №1:
Вы можете ссылаться на лист по его кодовому имени, однако это другой формат, и он должен быть в ThisWorkbook
. Недостатком является то, что вы не можете ссылаться на лист в другой книге по его кодовому имени. Worksheets("PQ Total US").Activate
против PQTotalUS.Activate
. Если ваша цель — сократить код и не повторять длинное имя, тогда другой вариант — выполнить следующее:
Dim wb1 as Workbook
Dim ws1 as Worksheet
Set wb1 = Workbooks("Power Query Meijer_Walmart_Total US xAOC.xlsm")
Set ws1 = wb1.Worksheets("PQ Total US")
With ws1
'Do something
End with