Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.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
Excel 启用和禁用下拉列表_Excel_Vba - Fatal编程技术网

Excel 启用和禁用下拉列表

Excel 启用和禁用下拉列表,excel,vba,Excel,Vba,“私有子工作表”更改(ByVal目标作为范围) '出现错误时,请继续下一步 '如果目标地址为“$O$5”,则退出Sub '选择案例UCase(Target.Value) '案例“否” 'Application.EnableEvents=False '范围(“Q5,Q20”)。ClearContents '范围(“R5,R20”)。ClearContents “是的” “”范围(“B28,B32”)。 'Application.EnableEvents=True '结束选择 ' “出口商: 'Ap

“私有子工作表”更改(ByVal目标作为范围)
'出现错误时,请继续下一步
'如果目标地址为“$O$5”,则退出Sub
'选择案例UCase(Target.Value)
'案例“否”
'Application.EnableEvents=False
'范围(“Q5,Q20”)。ClearContents
'范围(“R5,R20”)。ClearContents
“是的”
“”范围(“B28,B32”)。
'Application.EnableEvents=True
'结束选择
'
“出口商:
'Application.EnableEvents=True
“出口接头
'
'末端接头
专用子工作表\u选择更改(ByVal目标作为范围)
如果Target.Address=“$O$5”,则
Target.Range(“O5:08”).ClearContents=True
表9.d
如果结束
端接头

我需要能够启用“作者修改”和“用户修改”下拉列表(在excel中创建)当在中选择“是”时,使用VBA代码进行选择下拉列表并禁用作者修改用户修改当选择“否”时下拉列表。我尝试了所有方法,但不知道如何实现这一点。此项目中没有使用任何表单。如果您能告诉我如何通过VBA代码实现这一点,我将不胜感激

如果您已经设置了数据验证下拉列表,您可以只需关闭单元格内下拉列表和错误消息(这样即使数据验证被禁用,数据验证也会保持不变,但对用户来说是不可见的)

要触发宏,请使用
工作表\u Change
事件。此代码需要放在工作表中,而不是模块中

我只是假设您的“选择”范围是
O5:O12
,并且在“选择”和“作者修改”之间有一个隐藏列

请注意,您需要已经设置数据验证,否则您将收到错误


或者,您可以使用
验证。删除
以删除下拉列表和
验证。添加
以启用下拉列表。但这是更多的编码。

请在问题中包含您用来解决此问题的代码,并解释您遇到的问题。我找不到用于此的代码。您是否被删除行?您可能已删除所有数据验证单元格…数据验证单元格是手动配置的,并且位于正确的位置。如果我在这些单元格的e上选择,则会显示下拉列表。但我希望根据从左侧下拉列表中选择的是或否禁用/启用右侧的单元格(进行选择)。我添加了我的代码。请建议对其进行更改,以便我可以使其正常工作。Michael,你真是太棒了。非常感谢。这当然有帮助。有没有任何方法可以添加不同的颜色(如图所示)到我们已从中删除数据验证的下拉列表,这样用户会觉得它已被禁用。是的,当然。最简单的可能只是条件格式(您可以使用类似于$Q5=“否”)的内容。或者,您可以添加类似于单元格的内容(Target.Row,Target.Column+2)。Interior.Color=RGB(200,200,200)对于With语句中的四个case.Interior.ColorIndex或Interior.Color中的每一个,都会抛出一个不支持的对象异常。@Ruruboy不能放入With语句中,它应该类似于With单元格的
(Target.Row,Target.Column+2)。Interior.Color=RGB(200,200)With.Validation.InCellDropdown=True.ShowError=True结束,结束,结束
'Private Sub Worksheet_Change(ByVal Target As Range)
'On Error Resume Next
'If Target.Address <> "$O$5" Then Exit Sub
'Select Case UCase(Target.Value)
'    Case "NO"
'        Application.EnableEvents = False
'        Range("Q5,Q20").ClearContents
'        Range("R5,R20").ClearContents
'    Case "YES"
'        'Range("B28,B32").
'        Application.EnableEvents = True
'End Select
'
'exitHandler:
'  Application.EnableEvents = True
'  Exit Sub
'
'End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

 If Target.Address = "$O$5" Then
    Target.Range("O5:08").ClearContents = True
    Sheet9.d
 End If


End Sub
'Triggered when any cell on the sheet is changed
Private Sub Worksheet_Change(ByVal Target As Range)
    'Check if Target cell in the "Make a selection" range is changed
    If Not Intersect(Target, Range("O5:O12")) Is Nothing Then
        If Target.Value = "Yes" Then
            'Dropdown and error message on cells 2 and 3 columns left of "Make a selection" will be enabled
            With Cells(Target.Row, Target.Column + 2).Validation
                .InCellDropdown = True
                .ShowError = True
            End With
            With Cells(Target.Row, Target.Column + 3).Validation
                .InCellDropdown = True
                .ShowError = True
            End With
        ElseIf Target.Value = "No" Then
            'Dropdown and error message on cells 2 and 3 columns left of "Make a selection" will be enabled
             With Cells(Target.Row, Target.Column + 2).Validation
                .InCellDropdown = False
                .ShowError = False
            End With
            With Cells(Target.Row, Target.Column + 3).Validation
                .InCellDropdown = False
                .ShowError = False
            End With
        End If
    End If
End Sub