如何解决用于更新命名范围的 Excel VBA 脚本导致 .RefersTo 指向错误的单元格
遇到一个非常奇怪的问题。我想编写一些代码来查找表中列出的范围,并创建或更新该表第二列中的范围 RefersTo 值
所以表格看起来像这样
RangetoUpdate | FormulaForRange |
---|---|
RngNme1 | =Sheet1!C10 |
RngNme2 | =偏移量(Rng1,1,4,0) |
在这个例子中,代码运行,RngNme1被更新或创建,但地址偏移到Sheet1!F32,RngNme2按预期更新,但现在引用了错误的区域。
在调试中,Rng 确实按预期取值,但似乎没有正确更新。也尝试过 .Formula ,但这也不起作用。
代码如下:
Sub ReplaceRanges()
Dim RngNme,RngForm As Range
Dim rName As Variant
Dim i As Integer
Dim chkRng As Boolean
Dim Rng As String
Application.ScreenUpdating = False
Set RngNme = Range("tblRangeNameControl[RangetoUpdate]")
Set RngForm = Range("tblRangeNameControl[FormulaForRange]")
i = 0
For Each rName In RngNme
i = i + 1
chkRng = RangeExists(rName.Value2)
Rng = RngForm(i).Value2
If chkRng = True Then
ActiveWorkbook.Names.Item(rName.Value2).RefersTo = Rng
Else
ActiveWorkbook.Names.Add Name:=rName.Value2,RefersTo:=Rng
End If
Next
Application.ScreenUpdating = True
End Sub
Function RangeExists(rName As String) As Boolean
Dim Test As Range
On Error Resume Next
Set Test = Range(rName)
RangeExists = (Err.Number = 0)
End Function
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。