,我有一个用户表单,要求将其输入到各种文本框和组合框。输入用于测量,并具有与之关联的单位。我希望用户窗体显示当您单击每个特定的文本/组合框时预期使用的单位。
当前,我的代码适用于文本框,但无法识别组合框。这是我的代码。
Private Sub TextboxActions_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If InStr(1, TextboxActions.Name, "OD") > 0 Then
UserForm1.inUnit.Visible = True
UserForm1.mmUnit.Visible = False
UserForm1.eaUnit.Visible = False
ElseIf InStr(1, TextboxActions.Name, "CE") > 0 Then
UserForm1.inUnit.Visible = False
UserForm1.mmUnit.Visible = True
UserForm1.eaUnit.Visible = False
Else
UserForm1.inUnit.Visible = False
UserForm1.mmUnit.Visible = False
UserForm1.eaUnit.Visible = True
End If
End Sub
使用此选项,当用户单击文本框时,它将以mm或ea为单位显示单位。我也希望组合框也是如此,但是当前在单击组合框时什么也没有发生。
答案 0 :(得分:2)
首先,我将使用Enter
事件而不是Mouse up
事件,因此当您按Tab键进入控件时也会发生相同的情况。对于每个控件的Enter
事件,只需调用此ShowUnit函数并将其提供给控件名称即可。
Private Sub CE2_Enter()
Call ShowUnit(CE2)
End Sub
Private Sub OD1_Enter()
Call ShowUnit(OD1)
End Sub
Private Sub ShowUnit(ByRef oControl As Control)
If InStr(1, oControl.Name, "OD") > 0 Then
UserForm1.inUnit.Visible = True
UserForm1.mmUnit.Visible = False
UserForm1.eaUnit.Visible = False
ElseIf InStr(1, oControl.Name, "CE") > 0 Then
UserForm1.inUnit.Visible = False
UserForm1.mmUnit.Visible = True
UserForm1.eaUnit.Visible = False
Else
UserForm1.inUnit.Visible = False
UserForm1.mmUnit.Visible = False
UserForm1.eaUnit.Visible = True
End If
End Sub
edit:更改了控件名称以说明如何使用代码,并从测试值中的instr()
函数中返回了“ OD”和“ CE”。
有关其他说明,请参见下图,了解发生了什么情况。蓝色是您可以使用GUI来确保您引用控件事件的方式。红色表示我们已将完整的控件传递给ShowUnit函数。 Purple表示我们正在读取Controls Name属性以搜索“ OD”或“ CE”,请注意,它们不区分大小写而不使用instr(1, UCASE(oControl.Name), "OD") > 0
,因此,如果您的控件名称为odSomeName,则不会inUnit标签可见。
答案 1 :(得分:2)
使用3个Enter()
事件对我有用:
Private Sub ComboBox1_Enter()
UserForm1.Label1.Visible = True
UserForm1.Label2.Visible = False
UserForm1.Label3.Visible = False
End Sub
Private Sub ComboBox2_Enter()
UserForm1.Label1.Visible = False
UserForm1.Label2.Visible = True
UserForm1.Label3.Visible = False
End Sub
Private Sub ComboBox3_Enter()
UserForm1.Label1.Visible = False
UserForm1.Label2.Visible = False
UserForm1.Label3.Visible = True
End Sub
在组合框中单击的示例(在顶部的用户窗体ComboBox1
中处于活动状态,在第二个用户窗体ComboBox3
中处于活动状态,等等)