工作表更改时出现 VBA“Block If without End If”错误

工作表更改时出现 VBA“Block If without End If”错误

我有一个电子表格,它使用数据验证为数据库中具有特定值的几个单元格创建依赖下拉列表。

即使有依赖下拉菜单,如果用户在选择依赖值之后更改第一个值,他们仍然可能输入无效组合。

我希望在第一个下拉菜单发生更改时清除相关单元格。第一个下拉菜单位于 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

标记为注释的行包含错误。这需要分析。

相关内容