我想转换一个包含工作表名称的数组,但将其转换为Object而不是String
例如,我有这个:
arr=(Sheet01, Sheet02, Sheet03)
在数组上添加Watches时,类型为Variant / Object / Sheet01,这是我需要的。
但是我不想对我的名称表进行硬编码,而是使用如下范围:
arr = Worksheets("Data").Range("NameSheet")
但是当我使用此解决方案时,我得到的是Variant / Variant类型,但在使用后需要像这样的对象类型:
Set SheCurrent = arr(i)
是否可以做类似的事情?感谢您的帮助,对不起,大约英语
答案 0 :(得分:0)
这是将字符串数组转换为工作表对象数组的一种方法:
Sub WhatsInAName()
arr = Array("Sheet1", "Sheet2", "Sheet3")
Dim oArr(1 To 3) As Worksheet
i = 1
For Each a In arr
Set oArr(i) = Sheets(a)
i = i + 1
Next a
End Sub
答案 1 :(得分:0)
工作表是工作簿的一部分。每个工作簿都有collection
的{{1}},您可以按名称或按编号访问。如果您编写worksheets
,它将访问当前活动工作簿的工作表“数据” 。
所以简单的答案就是
Worksheets("Data")
但是我建议您读一点有关如何处理VBA中的工作簿和工作表的知识,例如10 ways to reference Excel workbooks and sheets using VBA。作为一般建议,您应该(几乎)永远不要假设某个特定的工作簿处于活动状态。