我试图将工作簿对象添加到一个工作簿数组中,该数组的类型为public,在一个单独的模块中创建。
Option Explicit
Public w() As Workbook
Public i As Integer然后,我将下面的过程存储在工作表中的一个子程序中。
Sub test_addwbobjects()
ReDim Preserve w(2)
Application.Workbooks("Quick analysis - Moneycontrol.xlsx").Activate
Set w(i) = ActiveWorkbook
'Set w(i) = Application.Workbooks("Quick analysis - Moneycontrol.xlsx")
i = i + 1
'ActiveSheet.Range("b2") = w(0).Sheets("CF analysis").Range("b2")
'ActiveSheet.Cells(1, 1) = w(i).Sheets("CF analysis").Range("b2")
'ActiveSheet.Range("b2") = w(1).Sheets("CF analysis").Range("b5")
End Sub背景:工作簿“快速分析- Moneycontrol.xlsx”包含一个公司的财务模型。我希望能够比较多家公司的财务信息,为此,每当我将公司的财务信息粘贴到“快速分析- Moneycontrol.xlsx”工作簿中时,我都希望创建一个工作簿对象。
我目前正在得到下标的范围外的错误。
有人能帮我吗?
谢谢
发布于 2016-02-01 15:23:05
也许这会有帮助:
Public w As Collection
Sub Test_addWBObject()
Set w = New Collection
w.Add Item:=Workbooks("Quick analysis - Moneycontrol.xlsx"), _
Key:="MyUniqueKeyForThisWorkbook"
'Can use collection as this:
ThisWorkbook.Worksheets("Sheet1").Range("A1") = w(1).Worksheets("Sheet1").Range("C2")
'or this
ThisWorkbook.Worksheets("Sheet1").Range("A1") = w("MyUniqueKeyForThisWorkbook").Worksheets("Sheet1").Range("C2")
'or this
Dim wrkBk As Variant
For Each wrkBk In w
ThisWorkbook.Worksheets("Sheet1").Range("A1") = wrkBk.Worksheets("Sheet1").Range("C2")
Next wrkBk
'or this
Dim x As Long
For x = 1 To w.Count
ThisWorkbook.Worksheets("Sheet1").Range("A1") = w(x).Worksheets("Sheet1").Range("C2")
Next x
End Subhttps://stackoverflow.com/questions/35113809
复制相似问题