使用VBA迭代表中的所有行和列

时间:2014-01-21 17:31:05

标签: excel vba excel-vba

我在工作表中有一个表,我想迭代并更改使用我设置的函数的值。该函数只调用多个Replace函数来更改字符串。

我的问题是如何只迭代表中的值?

我可以使用以下代码对列进行处理:

For Each cell In Sheets("RawData").ListObjects("RawTable").ListColumns("REQUESTNAME").DataBodyRange.Cells
    cell.Value = decodeEnt(cell.Value)
Next

但是我如何修改该代码以使其遍历行?我尝试使用ListRows和ListColumns的组合,但不知道在哪里去后手。在我不确定之前,我就到了这里:

Dim listObj As ListObject
Set listObj = Sheets("RawData").ListObjects("RawTable")

For Each tableRow In listObj.ListRows
    For Each tableCol In listObj.ListColumns
        ' Would using intersect work here?
        ' listObj.Cell.Value = decodeEnt(cell.Value)
Next

感谢任何帮助。

2 个答案:

答案 0 :(得分:4)

Dim Cell as Range

For Each Cell in listObj.DataBodyRange
...

答案 1 :(得分:3)

我认为你不能使用这样的变体迭代,你必须使用索引迭代。像这样(未经测试):

Dim listObj As ListObject, r%, c%
Set listObj = Sheets("RawData").ListObjects("RawTable")

For c = 1 To listObj.ListColumns.Count
    For r = 1 To listObj.ListRows.Count
        listObj.DataBodyRange.Cells(r, c).Value = decodeEnt(listObj.DataBodyRange.Cells(r, c).Value)
    Next
Next