Excel: VBA 引用基于字符串变量的命名范围
Excel: VBA referencing named range based on string variable
如何 reference/select 基于字符串变量的命名范围,文本是名称范围名称?
示例:
'Target is range variable which is set to cell that is double clicked.
'For this example lets say the cell value is "A1A"
Dim binName As String
binName = "B1" & Target(1).Value
MsgBox(binName) 'This displays "B1A1A" which is the name of the named range
Range(binName).Select 'I want to select the range with the name B1A1A
这给了我
运行-时间错误'1004':
对象“_Worksheet”的方法 'Range' 失败
在上面代码的最后一行。
我知道 Range() 正在寻找一个对象,但我不知道如何从字符串变量中引用调用范围名称。
在此先感谢您的帮助。
分辨率编辑:
根据下面戴维斯的建议,我更改了
Range(binName).Select
到
Application.Goto ThisWorkbook.Worksheets("B1").Range(binName) 'where "B1" is the worksheet name
Application.Evaluate(binName).Select
应用程序评估将评估字符串并解析引用。它接受字符串作为参数,并且不需要解析为范围(例如,Application.Evaluate("10")
将导致 return 为 10
)。
有关详细信息,请查看 MSDN 文档:https://msdn.microsoft.com/en-us/vba/excel-vba/articles/application-evaluate-method-excel。
编辑:值得注意的是,错误处理不当,因此如果输入字符串不是有效的命名范围,它可能会 return 一个 Nothing
引用或错误。
此外,ThisWorkbook.Sheets("SomeRangeName").Select
应该可以(并且确实可以)正常工作。更有可能是你的范围名称有问题
可以有一个仍然明确分配给单个作品的工作簿范围范围sheet,我收集的是你想要的(Name
指的是其他作品的某个范围[= =23=],等等)。
如果您以 UI 的身份执行此操作,而不是 Select
,请尝试使用以下内容:
Application.GoTo Range(binName)
或:
Application.GoTo [binName]
经过测试,即使某个范围明确用于另一作品sheet,似乎也能正常工作sheet,Application.GoTo
负责切换到该sheet并选择该范围。
如何 reference/select 基于字符串变量的命名范围,文本是名称范围名称?
示例:
'Target is range variable which is set to cell that is double clicked.
'For this example lets say the cell value is "A1A"
Dim binName As String
binName = "B1" & Target(1).Value
MsgBox(binName) 'This displays "B1A1A" which is the name of the named range
Range(binName).Select 'I want to select the range with the name B1A1A
这给了我 运行-时间错误'1004': 对象“_Worksheet”的方法 'Range' 失败 在上面代码的最后一行。
我知道 Range() 正在寻找一个对象,但我不知道如何从字符串变量中引用调用范围名称。
在此先感谢您的帮助。
分辨率编辑: 根据下面戴维斯的建议,我更改了
Range(binName).Select
到
Application.Goto ThisWorkbook.Worksheets("B1").Range(binName) 'where "B1" is the worksheet name
Application.Evaluate(binName).Select
应用程序评估将评估字符串并解析引用。它接受字符串作为参数,并且不需要解析为范围(例如,Application.Evaluate("10")
将导致 return 为 10
)。
有关详细信息,请查看 MSDN 文档:https://msdn.microsoft.com/en-us/vba/excel-vba/articles/application-evaluate-method-excel。
编辑:值得注意的是,错误处理不当,因此如果输入字符串不是有效的命名范围,它可能会 return 一个 Nothing
引用或错误。
此外,ThisWorkbook.Sheets("SomeRangeName").Select
应该可以(并且确实可以)正常工作。更有可能是你的范围名称有问题
可以有一个仍然明确分配给单个作品的工作簿范围范围sheet,我收集的是你想要的(Name
指的是其他作品的某个范围[= =23=],等等)。
如果您以 UI 的身份执行此操作,而不是 Select
,请尝试使用以下内容:
Application.GoTo Range(binName)
或:
Application.GoTo [binName]
经过测试,即使某个范围明确用于另一作品sheet,似乎也能正常工作sheet,Application.GoTo
负责切换到该sheet并选择该范围。