如果勾选了复选框,是否有办法 select 文本框输入? VBA Excel
Is there a way to select a TextBox input if a checkbox is ticked? VBA Excel
正如您在下图中看到的,我有几个代表措施的复选框,最后两个应该允许额外的措施。前面的文本框允许用户指定其度量的名称。
我能够使用以下代码将勾选复选框的名称(标题)成功发送到列表框:
Dim ctrl As Control
For Each ctrl In Me.Controls
If TypeName(ctrl) = "CheckBox" Then
If ctrl.Value = True Then
ListBox1.AddItem ctrl.Caption
End If
End If
Next ctrl
但是,如果用户选择“其他措施”复选框,我希望将他们在文本框中输入的内容添加到列表框中,而不是复选框标题。
有什么办法可以做到吗?
所以我尝试按照 SJR 的建议使用更多 if 语句并且它奏效了。
Dim ctrl As Control
For Each ctrl In Me.Controls
If TypeName(ctrl) = "CheckBox" Then
If ctrl.Value = True Then
If ctrl.Caption = "Additional Metric 1 (Specify Metric)" Then
ListBox1.AddItem TextBox3.Value
ElseIf TypeName(ctrl) = "CheckBox" Then
If ctrl.Value = True Then
If ctrl.Caption = "Additional Metric 2 (Specify Metric)" Then
ListBox1.AddItem TextBox4.Value
Else
ListBox1.AddItem ctrl.Caption
End If
End If
End If
End If
End If
Next ctrl
有什么办法可以简化这个吗? :)
为了保持代码简单,您可能需要使用 Tag
s 而不是 Caption
s
Private Sub CommandButton1_Click()
Dim ctl As Control
For Each ctl In Me.Controls
If TypeName(ctl) = "CheckBox" Then
If ctl.Value And ctl.Tag <> "" Then
ListBox1.AddItem ctl.Tag
End If
End If
Next ctl
End Sub
Private Sub TextBox1_Change()
Me.CheckBox4.Tag = Me.TextBox1.Text
End Sub
Private Sub TextBox2_Change()
Me.CheckBox5.Tag = Me.TextBox2.Text
End Sub
编辑: 添加条件 And ctl.Tag <> ""
正如您在下图中看到的,我有几个代表措施的复选框,最后两个应该允许额外的措施。前面的文本框允许用户指定其度量的名称。
我能够使用以下代码将勾选复选框的名称(标题)成功发送到列表框:
Dim ctrl As Control
For Each ctrl In Me.Controls
If TypeName(ctrl) = "CheckBox" Then
If ctrl.Value = True Then
ListBox1.AddItem ctrl.Caption
End If
End If
Next ctrl
但是,如果用户选择“其他措施”复选框,我希望将他们在文本框中输入的内容添加到列表框中,而不是复选框标题。
有什么办法可以做到吗?
所以我尝试按照 SJR 的建议使用更多 if 语句并且它奏效了。
Dim ctrl As Control
For Each ctrl In Me.Controls
If TypeName(ctrl) = "CheckBox" Then
If ctrl.Value = True Then
If ctrl.Caption = "Additional Metric 1 (Specify Metric)" Then
ListBox1.AddItem TextBox3.Value
ElseIf TypeName(ctrl) = "CheckBox" Then
If ctrl.Value = True Then
If ctrl.Caption = "Additional Metric 2 (Specify Metric)" Then
ListBox1.AddItem TextBox4.Value
Else
ListBox1.AddItem ctrl.Caption
End If
End If
End If
End If
End If
Next ctrl
有什么办法可以简化这个吗? :)
为了保持代码简单,您可能需要使用 Tag
s 而不是 Caption
s
Private Sub CommandButton1_Click()
Dim ctl As Control
For Each ctl In Me.Controls
If TypeName(ctl) = "CheckBox" Then
If ctl.Value And ctl.Tag <> "" Then
ListBox1.AddItem ctl.Tag
End If
End If
Next ctl
End Sub
Private Sub TextBox1_Change()
Me.CheckBox4.Tag = Me.TextBox1.Text
End Sub
Private Sub TextBox2_Change()
Me.CheckBox5.Tag = Me.TextBox2.Text
End Sub
编辑: 添加条件 And ctl.Tag <> ""