问题描述
我有一个 excel 工作簿,我正在运行一些代码以从多个工作表中的一个单元格中删除多余的空格。当我在单元格“E4”中输入某些内容时,它会删除“”的每个实例并将其替换为“”。这按预期工作。
我试图通过使用命名范围来使其适用于不止一张纸。在工作表中,我创建了一个命名范围“ConfigurationInput”,范围为工作表。
以下代码位于其中一张工作表中,它按预期运行:
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
包装代码