这应该很简单,但我是VBA菜鸟。我已经阅读了很多论坛,除了过于复杂的代码之外什么都没找到,我无法破译以适应我的应用程序。
在Excel 2007中,我已经定义了一个表。我不能发布图片,因为我是论坛的新手,但是该表有3列,标题行名为1到3,以及一个数据行,粗略显示如下:
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
它必须是一个语法的东西,但我没有运气在过去10多年中对VBA语法的各种迭代进行排序......
请帮忙!感谢。
答案 0 :(得分:5)
如果您想引用结构化表格的标题,那么这将引用包含标题的范围:
Dim rng as Range
Set rng = Activesheet.Range("Table1[#Headers]")
...如果你想按位置引用特定的标题:
Dim rngHdr2
Set rngHdr2 = rng.Cells(2) '2nd header cell
答案 1 :(得分:2)
您需要使用串联将表名构建为字符串:
item = ActiveSheet.Range("Table1[" & i & "]")
答案 2 :(得分:0)
结合两个答案
Sub Demo()
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
End Sub