VBA向指定工作表写入值时报Subscript out of range错误求助
错误原因及解决方案
- 工作表名称不匹配:你代码中调用
Sheets("Лист2")时传入的表名是Лист2,但实际工作表的完整显示名称为Лист2(Variables),VBA的Sheets集合匹配表名要求完全一致,字符、符号、空格都不能有差异,找不到对应工作表就会抛出下标越界错误。 - ActiveWorkbook指向不稳定:
ActiveWorkbook指代当前处于激活状态的工作簿,如果你操作过程中打开了其他Excel文件,激活状态切换到其他工作簿,而该工作簿下没有对应名称的工作表,也会触发该错误。 - 工作表对象名和显示名混用:你后续代码中
Лист2.Activate直接使用了工作表的VBA对象名(即VBA编辑器工程面板中工作表括号前的名称),如果要使用对象名直接操作,赋值行也可以直接调用对象名,不需要走Sheets集合查询。
修正方案
写法1:使用完整显示名+ThisWorkbook(推荐新手)
Sub cbsubmit_Click() ThisWorkbook.Sheets("Лист2(Variables)").Range("A1").Value = Kit ThisWorkbook.Sheets("Лист2(Variables)").Activate Unload Me End Sub
写法2:直接使用工作表对象名(运行效率更高)
如果Лист2就是你要操作的工作表的VBA对象名,直接写即可:
Sub cbsubmit_Click() Лист2.Range("A1").Value = Kit Лист2.Activate Unload Me End Sub
内容的提问来源于stack exchange,提问作者Stas Hladow
相关产品推荐
相关产品推荐

