Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
禁用或隐藏组合框VBA Excel中的选项_Excel_Vba - Fatal编程技术网

禁用或隐藏组合框VBA Excel中的选项

禁用或隐藏组合框VBA Excel中的选项,excel,vba,Excel,Vba,我在Excel Userform中有一个组合框,由用户组类型组成。 根据用户访问级别,我希望有一些选项\项禁用或不可见。 我不想使用Removeitem,因为我每次都要重新填充列表 sub ComboBox_Enter() accessLvl = 1 ComboBox.AddItem "0-Show" ComboBox.AddItem "1-Hide or disable" ComboBox.AddItem "2-Show" ComboBox.AddItem "3-Show" For i

我在Excel Userform中有一个组合框,由用户组类型组成。 根据用户访问级别,我希望有一些选项\项禁用或不可见。 我不想使用Removeitem,因为我每次都要重新填充列表

sub ComboBox_Enter() 

accessLvl = 1

ComboBox.AddItem "0-Show"
ComboBox.AddItem "1-Hide or disable"
ComboBox.AddItem "2-Show"
ComboBox.AddItem "3-Show"

For i = 0 To 3
      if accessLvl = 1 Then ComboBox.List(1).Hidden = True ' This not does work!! ''
Next

End sub

我只希望它被禁用\灰显或不可见,但仍在组合框列表中*

好吧,你不能这么做,但还有其他选择。用户将无法选择某些项目(以您指定的为准),即使该项目可见且未被禁用

为此,请尝试以下代码

Dim boolC As Boolean

'~~> Add Sample data
Private Sub UserForm_Initialize()
    ComboBox1.AddItem "Please Choose Again"

    For i = 1 To 10
        ComboBox1.AddItem i
    Next i
End Sub

'~~> This will not let the user select items in 2nd
'~~> 3rd and 4th items
Private Sub ComboBox1_Change()
    If Not boolC Then
        boolC = True
        Select Case ComboBox1.ListIndex
            Case 1, 2, 3: ComboBox1.ListIndex = 0
        End Select
        boolC = False
    End If
End Sub
屏幕截图

假设您的表单在表单启动时看起来像这样

当您选择第二、第三或第四项时,您将获得
请再次选择


谢谢,这是一个很好的选择!后备位置将由Telerik或其他供应商的第三方控制。他们可能有这样的东西,但要花美元。