【发布时间】:2017-04-18 09:13:08
【问题描述】:
我正在尝试从另一个工作表激活工作表并在 excel 的消息框中显示单元格值,但是每当我运行它时,都会出现下标错误,说下标超出范围。
我的代码:
Sub Home()
Dim tbValue As String
tbValue = Worksheets("Home").TextBox1.Value
Worksheets(tbValue).Activate
MsgBox Cells(7,1).Value
End Sub
有人知道为什么下标超出范围吗?谢谢
【问题讨论】:
-
您在
Textbox1中输入的工作表名称是否真的以工作表的形式存在?如果它确实尝试用TRIM包装您的 Textbox1 值以消除末尾的任何额外空格:Trim(Worksheets("Home").TextBox1.Value) -
是的,它存在,我什至尝试硬编码工作表名称而不是使用 tbValue 但它仍然是相同的错误,运行时错误 9,下标超出范围。
-
我不认为
TextBox1不能这样访问。它必须是工作表对象,例如Sheet1.TextBox1或Worksheets("Home").Shapes("TextBox1")... -
错误出现在哪一行?我之前的评论会出现在工作表激活行上。
tbValue是否从TextBox1正确获取值? -
如果没有在
MsgBox Cells(7,1).Value中限定工作表,它将使用当前活动的工作表-您可能正在从错误的工作表中读取单元格值。 @Vityata 展示了如何确保它使用With... End With块查看正确的工作表(或者只是将工作表名称放在Cells之前)。