我知道有很多类似的问题,但是没有一个问题对我的问题有所帮助。我一直在自学VBA,并开始从http://www.excel-easy.com/vba/userform.html学习用户表单。
一切正常且花哨地工作,直到突然消失,在进行一些调整后尝试运行我的用户窗体时,我收到了424错误代码
Private Sub CommandButton21_Click()
StartUpUserForm.Show
End Sub
是当前无法使用的版本,但我已经三遍三遍地检查了是否正确调用了用户窗体,删除并重新创建了按钮六次,在代码中重命名并撤回了用户窗体,这绝对没有帮助。
当前的用户表单是
Private Sub Userform_initialize()
'Empty NameTextBox
NameTextBox.Value = ""
'Empty Race_Select
Race_Select.Clear
'Fill Race_Select
With Race_Select
.AddItem "Dwarf"
.AddItem "Elf"
.AddItem "Gnome"
.AddItem "Half-Elf"
.AddItem "Half-Orc"
.AddItem "Halfling"
.AddItem "Human"
.AddItem "Other"
End With
'Empty Class_Select
Class_Select.Clear
'Fill Class_Select
With Class_Select
.AddItem "Barbarian"
.AddItem "Bard"
.AddItem "Cleric"
.AddItem "Druid"
.AddItem "Fighter"
.AddItem "Monk"
.AddItem "Paladin"
.AddItem "Ranger"
.AddItem "Rogue"
.AddItem "Sorceror"
.AddItem "Wizard"
End With
'Empty Attributes
Strength.Value = ""
Dexterity.Value = ""
Constitution.Value = ""
Intelligence.Value = ""
Wisdom.Value = ""
Charisma.Value = ""
End Sub
Private Sub Roll_Attributes_Click()
Dim Strength As Integer
Dim Dexterity As Integer
Dim Constitution As Integer
Dim Intelligence As Integer
Dim Wisdom As Integer
Dim Charisma As Integer
'Roll Attributes
Strength = Int((18 - 3 + 1) * Rnd + 3)
Dexterity = Int((18 - 3 + 1) * Rnd + 3)
Constitution = Int((18 - 3 + 1) * Rnd + 3)
Intelligence = Int((18 - 3 + 1) * Rnd + 3)
Wisdom = Int((18 - 3 + 1) * Rnd + 3)
Charisma = Int((18 - 3 + 1) * Rnd + 3)
'Display Integer as attribute
StrengthTextBox.Text = Strength
DexterityTextBox.Text = Dexterity
ConstitutionTextBox.Text = Constitution
IntelligenceTextBox.Text = Intelligence
WisdomTextBox.Text = Wisdom
CharismaTextBox.Text = Charisma
End Sub
(我知道这就像用砖头画蒙娜丽莎,但这不是这里的问题)
这个问题今天早些时候突然出现,但是我能够通过重命名用户表单并使用按钮代码将其撤回来避免它。但是,它在我重命名了属性文本框后又回来了,并且似乎永久恢复了。
您的问题出在“ Empty Attributes”(空属性)下方的Initialize事件中的代码块。
这些属性是什么?您可以为它们分配一个值,就好像它们是对象一样,但是在任何地方都没有声明它们。如果它们是变量,则将其声明为变量,然后使用进行初始化Strength = 0
。
这有帮助吗?
编辑:我只是注意到您在命令按钮的Click事件中声明变量。这就引起了有关“可变范围”的另一个问题。如果要在Initialize事件中声明变量(即使它们使用相同的名称),则它们将与Click事件中的变量不对应,因为它们是私有作用域的。您应该在初始化事件中完全删除对属性的引用。否则,您可以查看公开声明的变量。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句