如何基于字符串变量引用/选择命名范围,文本名称为范围名称?
示例:
'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
答案 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
负责切换到该工作表并选择该范围。