如何在userform事件之间传递控制值?

时间:2015-11-04 17:15:45

标签: excel vba excel-vba

我正在努力使用我创建的用户表单(称为Label_Select)。 我正在使用一些文本框和复选框初始化userform并在其中分配一些值。 然后我在设计模式下创建的userform上有一个OK按钮(如果有帮助的话,我可以在运行时创建这个按钮)。

我需要使用OK_Click代码中的文本框和复选框值,请参阅下文。 目前我得到了一个未定义的" Sub或Function"对于OK_Click子。

如何在userform初始化代码和userform的其他点击事件之间传递文本框和复选框值?

感谢您的回复

Private Sub UserForm_Initialize()

Dim LotBox(500) As MSForms.TextBox
Dim SensorCheckBox(500) As MSForms.CheckBox

For i = 1 To 4
For j = 1 To 4

k = i + (4 * j)

Set LotBox(k - 4) = Label_Select.Controls.Add("Forms.TextBox.1")
Set SensorCheckBox(k - 4) = Label_Select.Controls.Add("Forms.CheckBox.1")

With LotBox(k - 4)
 .Top = 250 + i * 25
 .Left = (j * 80) - 50
 .Width = 40
 .Height = 30
 .Font.Size = 14
 .Font.Name = "Calibri"
 .SpecialEffect = fmSpecialEffectSunken
 .Value = k
 .AutoSize = True
End With

With SensorCheckBox(k - 4)
    .Top = 246 + i * 25
    .Left = (j * 80) - 8
    .Height = 30
End With

If LotBox(k - 4).Value = " " Then
   Label_Select.Controls.Remove LotBox(k - 4).Name
   Label_Select.Controls.Remove SensorCheckBox(k - 4).Name
End If

Next j
Next i

End Sub

Private Sub OK_Click()

Worksheets("Sheet1").Cells(1,1)=LotBox(1).Value
Worksheets("Sheet1").Cells(2,1)=SensorCheckBox(1).Value

End Sub

2 个答案:

答案 0 :(得分:0)

尝试制作LotBox和SensorCheckBox公共变量

答案 1 :(得分:0)

您已在UserForm_Initialize中声明LotBoxSensorCheckBox,因此只要该子结束,它们都将超出范围。

将它们作为全局变量移动到模块的顶部。