按变量引用表列

dia*_*984 4 excel vba

这应该很简单,但我是VBA菜鸟.我已经阅读了很多论坛,除了过于复杂的代码之外什么都没找到,我无法破译以适应我的应用程序.

在Excel 2007中,我已经定义了一个表.我不能发布图片,因为我是论坛的新手,但是该表有3列,标题行名为1到3,以及一个数据行,粗略显示如下:

Table1
+------+------+-------+
|1     |  2   |   3   |
+------+------+-------+
|Alpha |Bravo |Charlie|
+------+------+-------+
Run Code Online (Sandbox Code Playgroud)

使用这个简单的表,以下工作,并返回文本"Alpha".

Sub works()

    Dim item As String

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

End Sub
Run Code Online (Sandbox Code Playgroud)

但我希望能够使用可调整变量来引用表列标题.为什么这不起作用:

Sub doesntwork()

    Dim item As String
    Dim i As String

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

End Sub
Run Code Online (Sandbox Code Playgroud)

它必须是一个语法的东西,但我没有运气在过去10多年中对VBA语法的各种迭代进行排序......

请帮忙!谢谢.

Tim*_*ams 5

如果要引用结构化表的标题,那么这将引用包含标题的范围:

Dim rng as Range    
Set rng = Activesheet.Range("Table1[#Headers]")
Run Code Online (Sandbox Code Playgroud)

...如果你想按位置引用特定的标题:

Dim rngHdr2    
Set rngHdr2 = rng.Cells(2) '2nd header cell
Run Code Online (Sandbox Code Playgroud)


Lit*_*les 2

您需要使用串联将表名称构建为字符串:

item = ActiveSheet.Range("Table1[" & i & "]") 
Run Code Online (Sandbox Code Playgroud)