在Access中选中和取消选中复选框

时间:2019-03-06 03:44:57

标签: vba ms-access checkbox

我在MS Access中有一个带有多个复选框的表单,我想用它来填写一个文本框。如果未选中其中一个复选框,则我希望从文本框中删除其值而不删除其他值。我是在VBA中使用Access和编码的新手(过去3周一直在阅读电子书),尽管我尝试在线进行研究,但我很难找到正确的代码。

这是我到目前为止所拥有的:


找到第一个代码

Private Sub cb_click()
If Me.cb1 = True Then
Me.txtComentarios.Value = "INACTIVO;"
Else
Me.txtComentarios.Value = Null
End If

End Sub

找到第二个代码

Private Sub cb2_Click()
If Me.cb2 = -1 Then
Me.[txtComentarios] = [txtComentarios] & "DISCREPANCIA"
Else
Me.[txtComentarios] = ""
End If
Exit Sub

End Sub

我也希望复选框以显示复选框的顺序填充文本框。

例如。

cb1; cb2; cb3

如果cb2未被选中并且其值被删除,我应该有“ cb1; cb3”,但是如果我重新检查cb2,我应该又得到“ cb1; cb2; cb3”。

我只是希望有人可以帮助我。在此先谢谢您。

Luz

1 个答案:

答案 0 :(得分:2)

您不需要每个复选框都具有事件。只需创建一个过程,该过程将根据复选框状态创建全文,并将此文本放入文本框。要在每次单击复选框后调用此函数,请将所有复选框的After Update属性设置为=MyFunctionToUpdateTextbox而不是[Event Procedure]

Private Function MyFunctionToUpdateTextbox()
    Dim strText As String

    If Me.cb1 = True Then
        strText = strText & "INACTIVO;"
    End If
    If Me.cb2 = True Then
        strText = strText & "DISCREPANCIA;"
    End If
    If Me.cb3 = True Then
        strText = strText & "Text for cb3"
    End If

    Me.txtComentarios = strText
End Function