excel vba使用变量字符串按名称激活选项卡

时间:2013-04-18 16:02:23

标签: vba variables excel-vba excel

有人可以帮忙吗?我有一种感觉,这种类型的问题是一个简单的问题,已经多次回答,但我似乎无法找到一个有效的解决方案。遇到错误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

当使用字符串引用代码中的选项卡名称时,如何才能获得现有选项卡?是因为字符串来自一个标签并试图打开另一个标签?

谢谢!

2 个答案:

答案 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解释说,在操作之前没有必要选择或激活工作表。做任何一个都会减慢代码速度。但是,我(以及其他人)遇到过这样的情况:首先选择或激活我们想要操作的工作表似乎是必要的,以避免错误。

参考文献:

https://www.automateexcel.com/vba/activate-select-sheet/

Excel Select vs Activate