簡體   English   中英

將數組集成到excel VBA中的子例程中

[英]Integrate an array into a subroutine in excel VBA

我是vba的新手,正在嘗試創建一個子例程,該例程將對5個工作簿執行相同的復制和粘貼操作。

我正在嘗試通過構建一個包含所有需要按以下功能執行的窗口的數組來做到這一點:

Sub Copyinforevised()
Dim i As Integer
Dim z As Integer
i = 1
z = 5
Dim wb(i To z) As Window
wb (1): Set wb1 = Windows("Chariot OPS project workbook.xlsx")
wb (2): Set wb2 = Windows("Chariot RAN project workbook.xlsx")
wb (3): Set wb3 = Windows("Chariot AT project workbook.xlsx")
wb (4): Set wb4 = Windows("Chariot OSS project workbook.xlsx")
wb (5): Set wb5 = Windows("Chariot MOB project workbook.xlsx")
For i = 1 To z
    Windows(wb(i)).Activate
[function to be done to the workbook]
Next i
End Sub

但是,當我嘗試運行宏時,出現錯誤“編譯錯誤常量表達式查詢”

這是一個有效的語法:

Sub Copyinforevised()
Dim i As Integer
Dim z As Integer
Dim wb

i = 1
z = 5

ReDim wb(i To z) As Window

Set wb(1) = Windows("Chariot OPS project workbook.xlsx")
Set wb(2) = Windows("Chariot RAN project workbook.xlsx")
Set wb(3) = Windows("Chariot AT project workbook.xlsx")
Set wb(4) = Windows("Chariot OSS project workbook.xlsx")
Set wb(5) = Windows("Chariot MOB project workbook.xlsx")
End Sub

請注意ReDim的使用。

無需設置一堆Workbook變量(這肯定是這樣做的一種方法),您可以將工作簿名稱放入一個數組中,並使用它來循環遍歷:

Sub Copyinforevised()
Dim wbList() As Variant
wbList = Array("Chariot OPS project workbook.xlsx", "Chariot RAN project workbook.xlsx", _
    "Chariot AT project workbook.xlsx", "Chariot OSS project workbook.xlsx", _
    "Chariot MOB project workbook.xlsx")

Dim i As Long
For i = LBound(wbList) To UBound(wbList)
    With Workbooks(wbList(i))
        ' Do whatever with the workbook
        Debug.Print .Sheets(1).Range("A1").Value
    End With
Next i

End Sub

(僅需注意,這些工作簿必須處於打開狀態。)

暫無
暫無

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

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