excel - 用于更新命名范围的 Excel VBA 脚本导致 .RefersTo 指向错误的单元格
问题描述
有一个非常奇怪的问题。我想编写一些代码来查找表中列出的范围,并创建或更新范围 RefersTo 值到该表第二列中的值
所以桌子可能看起来像这样
范围更新 | 范围公式 |
---|---|
RngNme1 | =工作表1!C10 |
RngNme2 | =偏移(Rng1,1,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
解决方案
推荐阅读
- php - 循环结果集显示额外的 br 标记
- javascript - 查询 MySQL 数据库,然后在表单提交后显示检索到的文本
- c# - 使用正则表达式验证模型
- excel - 在公式中使用下拉列表从另一个工作表中获取信息
- git - 我可以使用 Git 子模块将一个分支的副本保存在同一存储库中另一个分支的目录中吗?
- json - 使用 WSDL 将 JSON 转换为 XML 请求
- ios - CoreData:注释:无法在路径“Users/~/GoogleMaps.bundle/GMSCacheStorage.momd/StorageWithTileProto.omo”加载优化模型
- javascript - 如何删除 Phaser 3 中的图像?
- vb.net - vb.net - 执行 JavaScript 时出错
- c++ - C++中带有列表的树数据结构