2017-06-19 211 views
0

我正在尝试编写一个宏,它将字符串变量作为输入与字符串变量引用命名范围。在范围函数中引用命名范围(Excel-VBA)

目前我有什么是:

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是,而不是文字字母M.与C中的方式类似,例如,您将执行printf('%s',M)。

编辑:

目前我如何有Excel工作表的设置,就是你从下拉菜单中选择一个主要项目。然后,我想选择主项目下面的单元格,并自动填充子项目的行。子项目存储在以主项目命名的命名区域中。

因此,我希望我的宏自动读取它上面的行(主项),因此我有M =“= R [-1] C”。然后我想把它输入到范围函数中,这就是我目前面临的问题。

我希望这能更清楚地阐明我的问题。

+1

你仅仅意味着'集合G =范围(M)'?或者'设置g =范围(“”“”&M&“”“”)'? – BruceWayne

+0

@ SherifR你的解释没有帮助,你想做什么?你有2个字符串,一个是命名范围的名称,一个是那个值? – Ibo

+0

你究竟想在这里做什么?因为乍一看,它看起来像是在试图让一个简单的问题比它所需要的更困难。看看这个:https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem – SandPiper

回答

0

字符串字面封装在双引号,所以你基本上引用了一个名为范围称为&中号&

如果您使用字符串变量,请记住它的值也用引号括起来。所以它应该只是Range(M)Range("=R[-1]C"),两者是一样的。

注意:= R [-1] C是一个很奇怪的名字,你确定你的意思是?确保你了解指定范围和范围内的区别(它看起来像一个公式)!也许关于什么= R [-1] C的一些描述是,我可以帮助你更多?

+0

目前我如何设置excel表单,是你从下拉菜单中选择一个主项目。然后,我想选择主项目下面的单元格,并自动填充子项目的行。子项目存储在以主项目命名的命名区域中。 因此,我希望我的宏自动读取它上面的行(主项),因此我有M =“= R [-1] C”。然后我想把它输入到范围函数中,这就是我目前面临的问题。 我希望这有助于。 –

0

问题是你的变量M描述了一个相对引用,我不相信你可以用你描述的方式对Range对象应用相对引用。也许你想从另一个角度攻击你的问题?例如:

您可以使用您的方法,而是设置绝对引用,例如,

M = "A5" 
Debug.Print Range(M).Value 

或替代地如你可以使用代码指定相对参考:

debug.print activecell.Offset(-1,0).Value 
+0

这可能是问题所在。谢谢!我将设置一个Select Case来处理不同的主要项目,而不是使用相对引用。 –

0

我迄今明白 - 你有一个命名的范围,称为M并希望将其分配到一个VBA范围。如果是这样的话,这是代码来实现它:

Sub TestMe() 

    Dim g As Range 
    Set g = ActiveSheet.[M] 
    Debug.Print g.Address 

End Sub