微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用于更新命名范围的 Excel VBA 脚本导致 .RefersTo 指向错误的单元格

如何解决用于更新命名范围的 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 举报,一经查实,本站将立刻删除。