簡體   English   中英

為什么在引用 VBA 中的另一個工作簿/工作表時出現下標超出范圍錯誤 9?

[英]Why am I getting a Subscript Out of Range Error 9 when referencing another Workbook/Worksheet in 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" & .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

VBA 打印屏幕

您可以通過其代號引用工作表,但它是一種不同的格式,並且必須在ThisWorkbook中。 一個缺點是您無法通過代號引用另一個工作簿中的工作表。 Worksheets("PQ Total US").ActivatePQTotalUS.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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM