Excel:VBA基于字符串变量引用命名范围

时间:2017-08-07 19:27:31

标签: excel-vba range named-ranges vba excel

如何基于字符串变量引用/选择命名范围,文本名称为范围名称?

示例:

'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()正在寻找一个对象,但我不知道如何从字符串变量中引用一个范围名称。

感谢先进的任何帮助。

分辨率编辑: 根据下面的Per Davids建议,我改变了

Range(binName).Select

Application.Goto ThisWorkbook.Worksheets("B1").Range(binName) 'where "B1" is the worksheet name

2 个答案:

答案 0 :(得分:0)

post_id = where wp_post.ID (which is the ID of the product, not the shop_order) meta_key = _sku meta_value = my_sku_value_here

Application Evaluate将评估字符串并解析引用。它接受字符串作为参数,并且不需要解析为范围(例如,Application.Evaluate(binName).Select将导致返回Application.Evaluate("10"))。

有关详细信息,请查看MSDN文档:https://msdn.microsoft.com/en-us/vba/excel-vba/articles/application-evaluate-method-excel

编辑:值得注意的是,这并没有正确处理错误,因此如果输入字符串不是有效的命名范围,它可能会返回10引用或错误。

此外,Nothing应该可以正常工作(并且可以正常工作)。您的范围名称更有可能出现问题。

答案 1 :(得分:0)

可以将工作簿作用域范围明确分配给单个工作表,我收集的是您想要的(Name指的是某些其他工作表上的某个范围,等等)。

如果您是以UI身份执行此操作,而不是Select尝试使用以下内容:

Application.GoTo Range(binName)

或者:

Application.GoTo [binName]

经过测试,即使在另一个工作表上明确显示范围,似乎也可以正常工作,Application.GoTo负责切换到该工作表并选择该范围。