使用Excel Tables和VBA遍历动态列中的每一行

时间:2014-09-23 16:04:34

标签: excel vba excel-vba listobject

我正在尝试遍历Vertical Excel Table中的各种元素,并使用VBA将它们传递给水平表。垂直表是一个包含问题列表(名称,标签,值)的表单,水平表将包含使用垂直表中的问题名称的列。

代码看起来像这样:

Dim row As Range
Dim rowCount As Integer: rowCount = 1
For Each row In [tbl_QUESTIONS[name]].Rows
  Sheets(ANSWERS).Cells(r,rowCount).Value = row.Value
  rowCount = rowCount + 1
Next

我的问题是,如何修改表引用和列引用以使它们是动态的?

[tbl_QUESTIONS[name]].Rows

我希望能够做到这样的事情:

["tbl_" & tblName & "[" & colName & "]]".Rows

但这似乎不起作用......有没有更简单的方法来引用这个使用VBA?我觉得必须有一种方法可以从[“tbl_”&中创建ListObject。 tblName]但我无法在ListObject或ListObject.Rows中引用'colName'

任何帮助都将不胜感激。

哦,如果可能的话,我想保持这与Excel 2007 VBA兼容。

干杯!

2 个答案:

答案 0 :(得分:0)

我偶然发现 this link ,似乎可以解决问题。

看起来我可以使用以下内容创建范围:

Dim TBL As Range
Set TBL = Range("tbl_" & tblName & "[" & colName & "]")

我仍然希望看到一种保留ListObject而不是定义范围的方法,但我会继续使用它,直到我有另一种选择。

答案 1 :(得分:0)

你现在可能已经知道了,但由于这个问题没有答案......

使用LisObjects集合选择一个listObject并将其作为参数传递给你的function / sub