此Excel VBA代码不起作用。 我需要更新公式中的命名范围
我有名为Wk1,Wk2 Wk3等的工作表
每张纸上的所有命名区域都有以纸张名称开头的名称。 例如在Wk1工作表我有一个名为Wk1TotalWeight范围。
我有公式,每个sheet.eg = Wk1TotalWeight * 2引用这些命名范围
每当我添加一个名称以WK开头的新工作表时,我希望该表中的公式中的命名范围更新,以便它们以父表的名称开始。 例如,如果一个formaula = Wk1TotalWeight * 2在工作表Wk2我想公式更新= Wk2TotalWeight * 2
我试过这个代码,但它不工作。
Sub ChangeWkNamesInFormulasOnNewWksheet() Dim ws As Worksheet Dim r As Range For Each ws In Worksheets If InStr(1, ws.Name, "Wk", 1) > 0 Then For Each r In ws.Range("C118:I119") r.Formula = Replace(r.Formula, "Wk1", r.Parent.Name) Next r For Each r In ws.Range("C166:J170") r.Formula = Replace(r.Formula, "Wk1", r.Parent.Name) Next r End If Next ws MsgBox "Done" End Sub
inheritance人我做错了什么。
我有工作表Wk1,Wk2和Wk3,然后添加一个Wk4工作表。
我从Wk3工作表复制公式Wk4,但我应该从Wk1复制公式Wk4。
因为我从Wk3复制到Wk4公式包含以Wk3开头的命名范围。 换句话说,string“WK1”不在范围内。 这些命名范围需要以Wk1开始,以便代码正常工作
这就是为什么代码不起作用。 感谢上面的post中的评论中的本体
为什么不使用简单的r.Formula = Replace(r.Formula, "Wk1", ws.Name)