名前付き範囲のアドレスを変更ValidationChangerするメソッドを持つクラスがあります。しかし、私のコードは予期せず新しいアドレスを二重引用符で囲んでいます。changeNamedRangeAddressRefersTo
ここでのクラス定義ValidationChanger:
'ValidationChanger
Sub changeNamedRangeAddress(bk As Workbook, rangeName As String, newAddress As String)
bk.Names(rangeName).RefersTo = newAddress
End Sub
TestRangeシート内のアドレスを参照する、という名前の範囲でテストしInstructionsますInstructions!$A$133:$A$138。私のテストでは、アドレスを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"
新しいアドレスが二重引用符で囲まれている理由(アドレスではなくテキスト文字列として機能する)はありますか?