如何解决使用命名范围触发 Worksheet_Change 事件导致 1004 错误
我有一个 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
包装代码
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。