将值从UserForm传递到工作表

时间:2015-11-22 02:23:10

标签: excel vba excel-vba

我创建了一个名为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(代码)。

我哪里出错了?

1 个答案:

答案 0 :(得分:1)

levelInput= "beginner"

未声明该变量。我知道,你认为它是,但我马上就会知道。

你已经祈祷的东西被称为范围

Public levelInput as string

通过在levelInput的代码隐藏中声明Sheet1公共字段,您说“Sheet1的任何实例都会有{{ 1}}公共变量“。

因此,您可以将代码更改为:

levelInput

它会起作用。

但最重要的是:

Sheet1.levelInput= "beginner"

始终在每个模块的声明部分中打开该选项(即在任何Option Explicit SubFunction之前的顶部。如果你这样做了,VBA编译器会告诉你Property没有被声明,并且在你修复问题之前拒绝运行任何东西 - 通过声明一个本地范围的levelInput变量,或者通过适当地限定levelInput公共字段。

如果没有Sheet1.levelInput,VBA很乐意让您分配和引用未声明的变量,这会导致您遇到的意外错误。

PS - 一旦您的代码按预期工作,我建议您将其发布到Code Review,在那里您将学习为什么Option Explicit是错误的代码,以及如何使用函数,参数和返回值而不是全局变量,以获得更强大,可维护和更易于遵循的代码。