我有三个组合框-选中它们后,我希望它选中复选框。
如果选中该复选框,则“文本”框将变为“启用”,我目前将其设置为“禁用”。
我的问题是,当选择了三个组合时,如何将复选框设置为true。
我将如何做,以便在勾选框为true时启用tex框
答案 0 :(得分:3)
设置所有3个组合框后,将启用该复选框。更新任何组合框的值后,它将调用一个通用函数,该函数检查是否所有组合框都分配了值并相应地设置了复选框。
Private Sub cmbClientContact_AfterUpdate()
Call SetCheckBox
End Sub
Private Sub cmbClientName_AfterUpdate()
Call SetCheckBox
End Sub
Private Sub cmbProjectManager_AfterUpdate()
Call SetCheckBox
End Sub
Private Sub SetCheckBox()
If Nz(Me.cmbClientContact, "") <> "" And Nz(Me.cmbClientName, "") <> "" And Nz(Me.cmbProjectManager, "") <> "" Then
Me.Check25 = True
Me.Text27.Enabled = True
Else
Me.Check25 = False
End If
End Sub
启用/禁用复选框的文本框基值
Private Sub Check25_AfterUpdate()
If Nz(Me.Check25, False) Then
Me.Text27.Enabled = True
Else
Me.Text27.Enabled = False
End If
End Sub
答案 1 :(得分:3)
我建议使用所有3个组合框的AfterUpdate
事件。由于代码将是相同的(您要检查所有3个组合框是否都有值),因此可以创建一个函数来处理检查,并将该功能设置为所有3个组合的AfterUpdate
事件表单加载时显示框。
用于更新控件(文本框和复选框)的功能如下:
Private Function UpdateControls()
Me.Text1.Enabled = Not (IsNull(Me.Combo1) Or IsNull(Me.Combo2) Or IsNull(Me.Combo3))
Me.Check1.Value = Not (IsNull(Me.Combo1) Or IsNull(Me.Combo2) Or IsNull(Me.Combo3))
End Function
您可以在最初加载表单时调用此函数,因此将取消选中该复选框,并且将禁用文本框:
Private Sub Form_Load()
' update controls initially when the form loads
UpdateControls
End Sub
要确保每次更新组合框的值之一时都发生相同的更新,可以将每个组合框的AfterUpdate
事件设置为相同的函数,如下所示:
Private Sub Form_Load()
' set each combo box's AfterUpdate event to run the check
Me.Combo1.AfterUpdate = "=UpdateControls()"
Me.Combo2.AfterUpdate = "=UpdateControls()"
Me.Combo3.AfterUpdate = "=UpdateControls()"
End Sub
所以您的最终代码可能是这样的:
Private Sub Form_Load()
' set each combo box's AfterUpdate event to run the check
Me.Combo1.AfterUpdate = "=UpdateControls()"
Me.Combo2.AfterUpdate = "=UpdateControls()"
Me.Combo3.AfterUpdate = "=UpdateControls()"
' update controls initially when the form loads
UpdateControls
End Sub
Private Function UpdateControls()
Me.Text1.Enabled = Not (IsNull(Me.Combo1) Or IsNull(Me.Combo2) Or IsNull(Me.Combo3))
Me.Check1.Value = Not (IsNull(Me.Combo1) Or IsNull(Me.Combo2) Or IsNull(Me.Combo3))
End Function
答案 2 :(得分:2)
在不了解有关对象名称模式的更多细节的情况下,这是我的含糊不清的答案:
(很多)选项之一是使用On Click
事件过程,其内容如下:
If Not IsNull(Me.Combo1) _
And Not IsNull(Me.Combo2) _
And Not IsNull(Me.Combo3) Then
Me.Check1 = True
Me.Text1.Enabled = True
Else
Me.Check1 = False
Me.Text1.Enabled = False
End If
这假定复选框名为Check1
,文本框名为Text1
,组合框为Combo1
,Combo2
和Combo3
您的意思是Enabled
还是Visible
有点令人困惑,但是如果您的意思是Visible
,只需将.Enabled
的行更改为.Visible