我在Excel VBA中创建了一个useform,其中包含一个包含两个值的列表框。一次只能选择一个值。我在列表框中使用click事件,当用户单击列表框中的值时,特定范围(单元格)值将成为用户在列表框中单击的值。事件代码如下所示,
Private Sub lbPeriod_Click()
Range("input_Period").Value = frmInput.lbPeriod.Text
End Sub
用户还可以关闭用户窗体并使用excel表中的按钮打开用户窗体,其中包含以下2个子例程,
Sub showInputWizard()
If frmInput.Visible = False Then
Load frmInput
frmInput.Show
Else
Unload frmInput
End If
End Sub
卸载的原因是因为在给定活动工作表的情况下,userform中的另一个列表框必须采用不同的值。当用户表单被激活时,必须根据范围(Range("input_Period").Value
)的值选择列表框(lbPeriod)中的一个值。在表单初始化事件我使用以下代码
Private Sub UserForm_Initialize()
Me.StartUpPosition = 0
Me.Top = Application.Top + 270
Me.Left = Application.Left + 750
Me.lbPeriod = Range("input_period").Value
End Sub
我注意到的是,当我打开表单并单击一个值时,我的范围值会更改(这是正确的)但是当我关闭并再次打开表单时,范围值(Range("input_period").Value
)将变为空白。我使用双击事件测试它,双击事件不会出现此问题。我还要提到范围也是两个值的下拉列表。我该怎么办?
我还看到双击事件具有ByVal Cancel As MSForms.ReturnBoolean
扩展名。只需点击一下即可使用此类扩展吗?
我可以创建两个彼此看起来相似的形式,但我不喜欢这样。