我是 VBA 新手。我想知道的是,范围名称是否可以在多个工作表中动态变化。我在网上搜索时,发现了其他人提出的类似问题,并得到了来自本网站用户名为 Gary's Student 的某人的回答。下面是他/她的代码副本和原始消息的链接。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim str As String
str = Range("A1").Text
If Intersect(Range("A1"), Target) Is Nothing Then Exit Sub
Dim n As Name
For Each n In ActiveWorkbook.Names
If n.RefersTo = "=Sheet1!$A$2:$A$4" Then
n.Delete
End If
Next n
ActiveWorkbook.Names.Add Name:=str, RefersTo:="=Sheet1!$A$2:$A$4"
End Sub
我想知道是否可以在同一工作簿中复制 Sheet1 及其动态名称和范围,并到达范围名称不同的 Sheet2(工作表代码)(可能具有不同/相同的单元格范围)。我尝试过这个想法,但收到一条错误消息
Compile error:
Ambiguous name detected: Worksheet_Change
我需要复制工作表的原因是 Sheet1 是我对“基本情况”成本的计算,而 Sheet2 是“选项 1”的成本计算。选项 1 的大部分内容与“基本情况”相同,但有一些变化。然后我将创建一个比较表来识别两个(或更多,最多 4 个)工作表之间的变化。
如有任何帮助我将非常感激。
肖恩
初始问题的后期补充
在处理我正在处理的工作表后,我现在意识到我需要能够从“基本情况”工作表中复制工作表,其中“基本情况”工作表有多个命名范围。我需要复制的新工作表(例如“Sheet2”)具有与 Sheet1 相同的命名范围名称,但其中一些范围将引用更多或更少的行数。例如(见下文),在 Sheet1 中我有 3 个命名范围,如下所示。
--In Sheet1--
Name of named range 1: "Substructure" Range:$A$20:$A40
Name of named range 2: "Superstructure" Range:$A$42:$A60
Name of named range 3: "Finishes" Range:$A$62:$A80
--In Sheet2--
Name of named range 1: "Substructure" Range:$A$20:$A30
Name of named range 2: "Superstructure" Range:$A$32:$A66
Name of named range 3: "Finishes" Range:$A$68:$A100
肖恩