2017-06-19 146 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