对于我的问题,我已经检查了存档,并且有一个类似的线程,但我的问题略有不同,我似乎无法调整我的代码,使其工作。 类似的是:Excel 2010 VBA: How to store an array of worksheets as a variable?
我正在尝试使用变量为数组分配一系列选项卡。该变量使用另一张纸上单元格中的值。
Dim VendorTabsArray As Variant
VendorTabs= Sheets("OtherSheet").Range("A1").Value
VendorTabsArray = Array(VendorTabs)
ActiveWorkbook.Sheets(VendorTabsArray).Select
我希望用作变量的单元格A1中的实际值是" EBS - 添加用户"," EBS - 修改用户", " EBS - 删除用户"," EBS - 重新启用用户"," EBS - 密码重置"," EBS - 访问配置文件角色" ," EBS - 报告"
这给了我一个下标超出范围的错误。
当我向VendorTabArray添加一个监视时,它似乎无法识别变量中的引号和逗号,只是将整个选项卡列表添加到第一个数组位置而不是将它们拆分。
有没有人知道如何使用变量中的数组选择这些选项卡,其中变量是包含所有必需选项卡的单元格引用?
任何帮助都非常感谢,因为它令我感到困惑。
答案 0 :(得分:3)
从一些有用的东西开始:
Public Sub TestMe()
Dim someArray As Variant
someArray = Array("EBS - Add User", "EBS - Modify User")
ActiveWorkbook.Sheets(someArray).Select
End Sub
然后尝试从工作表中读取并本地化问题:
Public Sub TestMe()
Dim someString As String
someString = Range("A1")
Dim someArray As Variant
someArray = Split(someString, ",")
ActiveWorkbook.Sheets(someArray).Select
End Sub
问题在someArray的值中可见:
然后你需要一些“清洁”。因此,您创建了第二个数组,它删除了无用的"
并修改了一些值:
Public Sub TestMe()
Dim someString As String
someString = Range("A1")
Dim someArray As Variant
someArray = Split(someString, ",")
Dim someNewArray As Variant
ReDim someNewArray(UBound(someArray))
Dim cnt As Long
For cnt = LBound(someNewArray) To UBound(someNewArray)
someNewArray(cnt) = Trim(Replace(someArray(cnt), """", ""))
Next cnt
ActiveWorkbook.Sheets(someNewArray).Select
End Sub
现在可行:
答案 1 :(得分:1)
你想要的是分割功能。它将读取一个字符串并将字符串拆分为某些字符,并将每个拆分存储为数组库(0)的条目。见下文:
Dim VendorTabs, VendorTabsArray As Variant
VendorTabs = Sheets("Other Sheet").Range("A1").Value
VendorTabsArray = Split(VendorTabs, ",")
For t = LBound(VendorTabsArray) To UBound(VendorTabsArray)
VendorTabsArray(t) = Trim(VendorTabsArray(t))
MsgBox VendorTabsArray(t)
ActiveWorkbook.Sheets(VendorTabsArray(t)).Select
Next
这将变量设置为等于包含每个选项卡的单元格,然后split函数会自动创建一个包含条目的数组base(0)并将其存储在您为其指定的变量中。然后我们使用For循环遍历数组的下限(0)到上限(但是你有很多选项卡减去1),我们修剪数组值(去除逗号之前和之后的额外空格) )然后消息框只显示数组值。这样就可以检查阵列是否正常工作。
您可以将消息框替换为您希望阵列执行的任何功能。我不相信你在创建数组后指定了你想要做的事情,但无论你想做什么,那就是你放置代码的地方。
更新:我看到您希望在哪里选择制表符数组的工作表。我已将其添加到代码中。
答案 2 :(得分:1)