2012-07-19 41 views
4

這應該很簡單,但我是VBA noob。我讀過很多論壇,只發現了一些我無法解讀的代碼,但這些代碼過於複雜,無法適應我的應用程序。通過變量引用表格列

在Excel 2007中我有一個表已經定義。我不能發佈圖片,因爲我是新來的論壇,但該表有3列,通過3名爲1標題行和一個數據行作爲粗製濫造如下圖所示:

Table1 
+------+------+-------+ 
|1  | 2 | 3 | 
+------+------+-------+ 
|Alpha |Bravo |Charlie| 
+------+------+-------+ 

有了這個簡單的表以下作品,並返回文字「Alpha」。

Sub works() 

    Dim item As String 

    Sheets("Sheet1").Select 
    item = ActiveSheet.Range("Table1[1]") 
    MsgBox (item) 

End Sub 

但我希望能夠引用帶有可調變量的表列標題。爲什麼這一工作並不:

Sub doesntwork() 

    Dim item As String 
    Dim i As String 

    i = 1 
    Sheets("Sheet1").Select 
    item = ActiveSheet.Range("Table1[i]") 
    MsgBox (item) 

End Sub 

它必須是一個語法的事情,但我有沒有運氣,通過在過去十多年的VBA語法的所有各種迭代排序...

請幫忙!謝謝。

回答

2

您需要使用級聯建表名作爲字符串:

item = ActiveSheet.Range("Table1[" & i & "]") 
+1

所以這是符號是什麼!我認爲有些人正在使用它來指出舊版本中的變量。這是我需要的解決方案!非常感謝。 – diakonos1984 2012-07-19 21:55:38

5

如果你想引用一個結構化的表頭,然後這將讓你包含頭文件的範圍參考:

Dim rng as Range  
Set rng = Activesheet.Range("Table1[#Headers]") 

...如果你想通過位置來指代特定的標題:

Dim rngHdr2  
Set rngHdr2 = rng.Cells(2) '2nd header cell 
+1

這就是我要採取的下一步的解決方案。感謝您提前思考。 – diakonos1984 2012-07-19 21:57:05

0

結合兩個答案

小組演示()

Dim rng As Range 
Dim celda As Range 
Dim nroTabla As Integer 
Dim nroFila As Integer 
Dim nroCol As Integer 

nroTabla = 1 
nroFila = 2 
nroCol = 3 

Set rng = ActiveSheet.Range("Tabla" & nroTabla & "[#Headers]") 
Set celda = rng.Cells(nroFila, nroCol) 

celda.Value = 700 

末次