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