【发布时间】:2021-09-16 17:57:18
【问题描述】:
我对 VBA 完全陌生,需要编写一些简单的 VBA 代码来进行一些计算。
我有一个名为 fKitsel 的用户表单,它使用户可以选择 6 个选项之一,并将所选选项的数量作为 Public Kit As Integer 变量写入工作表Лист2(Variables)(我需要在我的组织中使用乌克兰语 excel 本地化)。
当用户按下 cbsubmit 命令按钮时发生写入。
这个子看起来像:
Sub cbsubmit_Click()
ActiveWorkbook.Sheets("Лист2").Range("A1").Value = Kit ' error points here
Лист2.Activate
Unload Me
End Sub
当我单击 cbsubmit 按钮时,我收到“下标超出范围”错误,该错误指向我在代码块中注释的行。 无法理解我做错了什么。
【问题讨论】:
-
我不认为 VBA 喜欢在编辑器中使用非英语字符,因此不要引用
ActiveWorkbook.Sheets("Лист2").Range("A1").Value,而是使用它的CodeName,例如Sheet1.Range("A1").Value(在VBA编辑器的项目窗格中,它是工作表对象左侧的名称,括号中的是工作表名称)。 -
感谢您的提示。问题是 CodeNames 本身使用的是西里尔字符,例如:Лист1(MainList)。如果我做对了,代码名称是“Лист1”,它的工作表名称(我在 Excel 本身中使用重命名给他)是“MainList”。所以现在我正在尝试下一件事:'Лист2.Range("A1").Value = Kit',现在我收到运行时错误 1004:应用程序定义或对象定义错误。
-
所以您在 Excel 中工作表选项卡下看到的名称是
MainList?在这种情况下,您可以尝试ThisWorkbook.Worksheets("MainList").Range("A1").Value。 (我假设您运行代码的工作簿与MainList所在的工作簿相同。使用ActiveWorkbook不是一个好主意,因为当您将焦点更改为另一个可能不是的工作簿时,参考会发生变化你的意图)@Stas -
@RaymondWu 谢谢。参考你建议的方式。仍然错误 1004:引用引用行的应用程序定义或对象定义错误。
-
refers to the reference row是什么意思?错误仍然在同一行吗?如果没有,那么您需要显示更多代码。 @斯塔斯