我创建了一个名为Level的用户窗体,带有一个按钮,“初学者”。单击“初学者”时将levelinput设置为在编码表1中使用的字符串
-------------- Sheet 1中(代码)------------
InternetReadFile
--------------以下是Userform,Levels ------------------
Public levelInput as string
Public Sub Player()
Level.show
Msgbox levelInput
Lev=levelInput
.....
end sub
目前,msgbox没有显示任何内容,似乎没有将值传递给Sheet(代码)。
我哪里出错了?
答案 0 :(得分:1)
levelInput= "beginner"
未声明该变量。我知道,你认为它是,但我马上就会知道。
你已经祈祷的东西被称为范围。
Public levelInput as string
通过在levelInput
的代码隐藏中声明Sheet1
公共字段,您说“Sheet1
的任何实例都会有{{ 1}}公共变量“。
因此,您可以将代码更改为:
levelInput
它会起作用。
但最重要的是:
Sheet1.levelInput= "beginner"
始终在每个模块的声明部分中打开该选项(即在任何Option Explicit
或Sub
或Function
之前的顶部。如果你这样做了,VBA编译器会告诉你Property
没有被声明,并且在你修复问题之前拒绝运行任何东西 - 通过声明一个本地范围的levelInput
变量,或者通过适当地限定levelInput
公共字段。
如果没有Sheet1.levelInput
,VBA很乐意让您分配和引用未声明的变量,这会导致您遇到的意外错误。
PS - 一旦您的代码按预期工作,我建议您将其发布到Code Review,在那里您将学习为什么Option Explicit
是错误的代码,以及如何使用函数,参数和返回值而不是全局变量,以获得更强大,可维护和更易于遵循的代码。