0

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

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

谢谢!!

4

2 回答 2

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
于 2013-04-18T18:17:19.023 回答
0

对于那些遇到这个问题的人(来自谷歌?)寻求如何使用变量字符串按名称激活选项卡的直接答案:

Sheets(23).Activate

或者

Worksheets(1).Select

或者

Sheets("mytabname").Activate

无需激活工作表即可以编程方式对其进行操作,您也可以选择它:

Sheets("mytabname").Select

这个答案解释了在操作它之前没有必要选择或激活工作表。做任何一个都会减慢代码的速度。但是,我(和其他人)遇到过这样的情况,首先选择或激活我们想要操作的工作表似乎是避免错误所必需的。

参考:

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

Excel 选择与激活

于 2018-06-05T21:30:08.117 回答