当多选列表框中不再选择选项时,如何使组合框变得不可见?

问题描述 投票:0回答:2

我有一个多选列表框(nameDatabase),当我选择一个选项时,会出现一个组合框,我可以使用它。但是,当我取消选择它时,组合框在取消选择后保持可见。

这就是我目前必须使它们可见并将所选项目放置到文本框的方法:

Private Sub nameDatabase_AfterUpdate()

Dim strEng As String
Dim varItem As Variant
    
For Each varItem In Me.nameDatabase.ItemsSelected
    
    strEng = strEng & ", " & Me.nameDatabase.ItemData(varItem)
        
Next
    
If Len(strEng) > 0 Then
    
    strEng = Mid(strEng, 2)
        
End If
    
Me.TestBox = strEng

If nameDatabase.Column(Value) = "A" Then
        
    codeJBox.Visible = True
        
ElseIf nameDatabase.Column(Value) = "B" Then
    
    codeSBox.Visible = True

ElseIf nameDatabase.Column(Value) = "C" Then

    codePBox.Visible = True
    codeABox.Visible = True
   
End If

End Sub

我试图让一个文本框包含选择,例如,如果“A”不在其中,它就会消失,尽管它不起作用,或者我做错了什么。我有一种感觉,我错过了一些简单的事情,让组合框消失,而且我想太多了。

vba ms-access combobox listbox multi-select
2个回答
0
投票

您最初可以将它们全部隐藏:

codeJBox.Visible = False
codeSBox.Visible = False
codePBox.Visible = False
codeABox.Visible = False

If nameDatabase.Column(Value) = "A" Then
        
    codeJBox.Visible = True
        
ElseIf nameDatabase.Column(Value) = "B" Then
    
    codeSBox.Visible = True

ElseIf nameDatabase.Column(Value) = "C" Then

    codePBox.Visible = True
    codeABox.Visible = True
   
End If

0
投票

这应该适合您的用例:

Private Sub nameDatabase_Change()
    Dim Value As Long
    'Value = 1 'was for testing
    If nameDatabase.Text <> "" Then
        codeJBox.Visible = nameDatabase.Column(Value) = "A"
        codeSBox.Visible = nameDatabase.Column(Value) = "B"
        codePBox.Visible = nameDatabase.Column(Value) = "C"
        codeABox.Visible = nameDatabase.Column(Value) = "C"
    Else
        codeJBox.Visible = False
        codeSBox.Visible = False
        codePBox.Visible = False
        codeABox.Visible = False
    End If
End Sub

如果未选择任何内容,则 4 会变为不可见,而当键入某些内容时,只会使您需要的内容可见。如果有不清楚的地方请告诉我。

© www.soinside.com 2019 - 2024. All rights reserved.