将字符串表转换为对象表VBA

时间:2018-06-21 14:44:58

标签: excel vba excel-vba

我想转换一个包含工作表名称的数组,但将其转换为Object而不是String

例如,我有这个:

arr=(Sheet01, Sheet02, Sheet03)

在数组上添加Watches时,类型为Variant / Object / Sheet01,这是我需要的。

但是我不想对我的名称表进行硬编码,而是使用如下范围:

arr = Worksheets("Data").Range("NameSheet")

但是当我使用此解决方案时,我得到的是Variant / Variant类型,但在使用后需要像这样的对象类型:

Set SheCurrent = arr(i)

是否可以做类似的事情?感谢您的帮助,对不起,大约英语

2 个答案:

答案 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。作为一般建议,您应该(几乎)永远不要假设某个特定的工作簿处于活动状态。