有人可以帮忙吗?我有一种感觉,这种类型的问题是一个简单的问题,已经多次回答,但我似乎无法找到一个有效的解决方案。遇到错误9:下标超出范围。
令人沮丧的很大一部分原因在于代码的简单性。我有一个电子表格,其标签名为“Dist.12345-Store.67890”。如果我使用的话,我有VBA代码可以成功打开该选项卡:
Sub test()
Worksheets("Dist.12345-Store.67890").visible = true
End sub
但是,不是在31个不同的子代码中对代码中的这个字符串进行31次硬编码,而是将字符串放在一起作为变量storeselect2,并将此字符串作为要显示的工作表引用。但我得到了错误9 ...
Sub test()
Dim storeselect2 As String
storeselect2 = "Dist." & ActiveCell.Offset(0, -1).Value & "-Store." & ActiveCell.Value
` the storeselect2 is now = "Dist.12345-Store.67890" `
Sheets(storeselect2).Visible = True `this is where error 9 occurs`
End Sub
当使用字符串引用代码中的选项卡名称时,如何才能获得现有选项卡?是因为字符串来自一个标签并试图打开另一个标签?
谢谢!
答案 0 :(得分:0)
这就是你需要写的东西
Dim storeselect2 As String
Dim pig, dog, cat, bird As String
pig = "Dist."
dog = ActiveCell.Offset(0, -1).Value
cat = "-Store."
bird = ActiveCell.Value
storeselect2 = pig & dog & cat & bird
Sheets(storeselect2).Visible = False
答案 1 :(得分:0)
对于那些到达这个问题的人(来自谷歌?)寻求如何使用变量字符串按名称激活标签的直接答案:
Sheets(23).Activate
或
Worksheets(1).Select
或
Sheets("mytabname").Activate
没有必要激活工作表以便以编程方式操作它,您也可以选择它:
Sheets("mytabname").Select
This answer解释说,在操作之前没有必要选择或激活工作表。做任何一个都会减慢代码速度。但是,我(以及其他人)遇到过这样的情况:首先选择或激活我们想要操作的工作表似乎是必要的,以避免错误。
参考文献: