使用命名范围触发 Worksheet_Change 事件导致 1004 错误

Use named range to trigger Worksheet_Change event causes 1004 error

我有一个 excel 工作簿,我正在 运行 一些代码,用于在几个 sheet 中从一个单元格中删除多余的空格。当我在单元格“E4”中输入内容时,它会删除“”的每个实例并将其替换为“”。这按预期工作。

我试图通过使用命名范围使它适用于多个 sheet。在 sheet 中,我创建了一个范围为 sheet.

的命名范围“ConfigurationInput”

以下代码在 sheet 之一中,并且按预期运行:

Private Sub Worksheet_Change(ByVal Target As Range)
    
    If Not Intersect(Target, Range("E4")) Is Nothing Then
        Call RemoveSpaces(Range("E4"))
    End If

End Sub

这会调用位于模块中的以下 Sub:

Sub RemoveSpaces(RngRemove)

    Dim rng As Range
    Set rng = RngRemove
    
    rng = WorksheetFunction.Substitute(rng, " ", "")

End Sub

我正在尝试用命名范围“ConfigurationInput”替换“E4”,但我收到以下崩溃错误 Excel:

有人有什么建议吗?我尝试简化为单个单元格并使用 .Address 但这也不起作用:

If Target.Address = Range("ConfigurationInput").Address Then

我终于想通了:

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
    If Not Intersect(Target, Range("ConfigurationInput")) Is Nothing Then
        Call FixConfig(Range("ConfigurationInput"))
    End If
Application.EnableEvents = True
End Sub

我不得不用 Application.EnableEvents = False Application.EnableEvents = True

包装代码