【发布时间】:2021-02-10 17:58:10
【问题描述】:
我有一个 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
【问题讨论】:
-
Sub RemoveSpaces(RngRemove as Range) -
@ScottCraner - 似乎在 Excel 365 中,不能再在多个工作表上使用相同的工作表范围名称,但每个名称必须是唯一的。你有同样的行为吗?如果是这样,那将是一个巨大的变化,似乎没有任何地方记录在案。
-
我没有这个限制。我只是将不同工作表上的两个范围命名为相同的名称。 @大本
-
@ScottCraner - 我问的很好。我重新启动了 Excel,现在不再有这个问题了。
-
@ScottCraner:感谢您的建议。我测试了
Sub RemoveSpaces(RngRemove as Range),但它没有用。我不得不用Application.EnableEvents = False和Application.EnableEvents = True包装 IF 语句
标签: excel vba runtime-error named-ranges