如何改变RefersTo命名的范围?
我有一个类ValidationChanger
,方法changeNamedRangeAddress
应该改变一个命名范围的RefersTo
地址。 但是,我的代码意外地将新地址换成双引号。
ValidationChanger
类定义在这里:
'ValidationChanger Sub changeNamedRangeAddress(bk As Workbook, rangeName As String, newAddress As String) bk.Names(rangeName).RefersTo = newAddress End Sub
我testing了一个名为TestRange
的范围,它引用表单中的地址Instructions
: Instructions!$A$133:$A$138
。 我的testing应该将地址更改为Instructions!$A$133:$A$139
与以下内容:
Sub testValidationChanger() Dim vc As New ValidationChanger Dim bk As Workbook Set bk = Workbooks("test.xlsm") Debug.Print bk.Names("TestRange").RefersTo vc.changeNamedRangeAddress bk, "TestRange", "Instructions!$A$133:$A$139" Debug.Print bk.Names("TestRange").RefersTo End Sub
输出是:
=Instructions!$A$133:$A$138 ="Instructions!$A$133:$A$139"
任何想法为什么新的地址是用双引号(这使得它作为一个文本string,而不是一个地址)包装?
将新范围作为范围对象传递,而不是string:
vc.changeNamedRangeAddress bk, "TestRange",[Instructions!$A$133:$A$139]
你得到一个文本string的原因是,你没有在前面加一个=符号的文本string(这样Excel会知道它应该是一个公式)