我有一个电子表格,它使用数据验证为数据库中具有特定值的几个单元格创建依赖下拉列表。
即使有依赖下拉菜单,如果用户在选择依赖值之后更改第一个值,他们仍然可能输入无效组合。
我希望在第一个下拉菜单发生更改时清除相关单元格。第一个下拉菜单位于 E 列和 H 列。当 E 列发生更改时,我需要清除 G 列的内容。当 H 列发生更改时,我需要清除 K 列和 O 列的内容。
这是产生错误的当前代码:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Column = 5 Then
If Target.Validation.Type = 3 Then
Application.EnableEvents = False
Target.Offset(0, 2).ClearContents
Else
If Target.Column = 8 Then
If Target.Validation = 3 Then
Application.EnableEvents = False
Target.Offset(0, 3).ClearContents
Else
If Target.Column = 8 Then
If Target.Validation = 3 Then
Application.EnableAnimationsEvents = False
Target.Offset(0, 7).ClearContents
End If
End If
End If
End If
End If
exitHandler:
Application.EnableEvents = True
Exit Sub
End Sub
我也尝试输入 Target.Asset 作为一个范围,但也没有得到理想的结果。
答案1
If
如果您使用了正确的缩进,您会注意到's 和's的数量不匹配End If
。
此外,代码中还存在逻辑错误和无效的属性名称。
尝试此变体:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Column = 5 Then
If Target.Validation.Type = 3 Then
Application.EnableEvents = False
Target.Offset(0, 2).ClearContents
End If
ElseIf Target.Column = 8 Then
If Target.Validation.Type = 3 Then
Application.EnableEvents = False
Target.Offset(0, 3).ClearContents
Target.Offset(0, 7).ClearContents
' Else
' If Target.Column = 8 Then
' If Target.Validation.Type = 3 Then
' Application.EnableAnimationsEvents = False 'EnableAnimations ? or EnableEvents ?
' End If
' End If
End If
End If
exitHandler:
Application.EnableEvents = True
' Exit Sub
End Sub
标记为注释的行包含错误。这需要分析。