我试图编写一个将字符串变量作为输入的宏,其中字符串变量引用命名范围。
目前我所拥有的是:
Sub SubItems()
Dim M As String
M = "=R[-1]C"
'where M refers to row above, currently it is Manufacturers
Dim g As Range
Set g = Range(" & M & ")
ActiveCell.Value = g(2)
'For Example
End Sub
问题在于设置g =范围("& M&")语法
我希望Range函数的输入参数是M是什么,而不是文字字母M.与C中的方式类似,例如你可以使用printf('%s',M)。
修改
目前我如何设置Excel工作表,是您从下拉菜单中选择主要项目。然后我想选择主项下面的单元格并自动用子项填充行。子项存储在以主项命名的命名范围内。
因此我希望我的宏自动读取它上面的行(主项),因此为什么我有M =" = R [-1] C"。然后我想将其输入到范围函数中,这就是我目前面临的问题。
我希望这能更清楚地澄清我的问题。
答案 0 :(得分:0)
字符串文字包含在双引号中,因此您实际上引用了一个名为&的名为Range的范围。 M& 。
如果您使用字符串变量,请记住它的值也被引号括起来。因此它应该只是Range(M)
或Range("=R[-1]C")
,两者是相同的。
注意:= R [-1] C是一个非常奇怪的名字,你确定你的意思吗?确保您了解命名范围与范围内的差异(看起来像公式)!也许关于什么= R [-1] C的描述是什么,我可以帮助你更多?
答案 1 :(得分:0)
问题是你的变量M描述了一个相对引用,我不相信你可以用你描述的方式对Range对象应用相对引用。也许你想从不同的角度来解决你的问题?例如:
您可以使用您的方法,而是设置绝对引用,例如
M = "A5"
Debug.Print Range(M).Value
或者您可以使用以下代码指定相对引用:
debug.print activecell.Offset(-1,0).Value
答案 2 :(得分:0)
到目前为止我已经理解了 - 您有一个名为M
的命名区域,并且您希望将其分配给VBA范围。如果是这种情况,这是实现它的代码:
Sub TestMe()
Dim g As Range
Set g = ActiveSheet.[M]
Debug.Print g.Address
End Sub