将用户窗体的值传递给工作表
我用一个button“beginner”创build了一个名为Level的用户窗体。 点击时,“初学者”被设定为电平input,作为在编码表1中使用的string
————– Sheet 1中(代码)————
Public levelInput as string Public Sub Player() Level.show Msgbox levelInput Lev=levelInput ..... end sub
————–下面是用户窗体,级别——————
Private Sub beginner_Click() levelInput= "beginner" Levels.Hide end sub
目前,msgbox什么也没有显示,并且这个值似乎没有传递给Sheet(Code)。
我哪里做错了?
levelInput= "beginner"
该variables未被声明。 我知道,你认为这是事实,但我马上就会明白。
你祈祷的东西被称为范围 。
Public levelInput as string
通过在Sheet1
的代码隐藏中声明levelInput
公共字段,您会说“ Sheet1
任何实例都将具有一个levelInput
公共variables”。
所以你可以改变你的代码:
Sheet1.levelInput= "beginner"
它会工作。
但是最重要的是这样做的:
Option Explicit
总是在每个模块的声明部分打开该选项(即在顶部,在任何子或Function
或Property
)。 如果你这样做了,VBA编译器会告诉你levelInput
没有被声明,并且在你解决这个问题之前,会拒绝运行任何东西 – 通过声明一个局部范围的levelInput
variables,或者通过正确限定Sheet1.levelInput
public领域。
如果没有Option Explicit
,VBA可以让你分配和引用未声明的variables,这会导致意外的错误,正如你所经历的那样。
PS – 一旦你让你的代码按预期工作,我build议你在Code Review上发布它,在这里你将学到像Level.Show
为什么是坏代码,以及如何使用函数,参数和返回值的全局variables,以获得更健壮,更易于维护且更容易遵循的代码。