📜  vba 循环遍历表 - VBA (1)

📅  最后修改于: 2023-12-03 14:48:17.307000             🧑  作者: Mango

VBA 循环遍历表 - VBA

介绍

在 VBA 中,我们经常需要循环遍历表格中的数据来进行操作,例如计算、修改等。本文将介绍如何使用 VBA 循环遍历表格中的数据。

方法

对于一个表格,我们可以通过其工作表的名称和表格的名称来进行引用。例如,下面的代码将引用一个名为“Sheet1”的工作表中的名为“Table1”的表格:

Dim tbl As ListObject
Set tbl = ThisWorkbook.Worksheets("Sheet1").ListObjects("Table1")

接下来,我们可以使用 For Each 循环语句遍历表格中的行和列。例如,下面的代码将遍历表格中的所有行和列,并将它们的数值输出到调试窗口中:

Dim row As ListRow
Dim col As ListColumn
For Each row In tbl.ListRows
    For Each col In tbl.ListColumns
        Debug.Print row.Range(col.Range.Address).Value
    Next col
Next row

在上面的代码中,我们使用了 ListRowListColumn 对象来引用表格中的行和列。对于每个行和列,我们使用 Range 属性获得它们的单元格范围,并将该单元格的数值输出到调试窗口中。

示例

下面的代码将从一个名为“Sheet1”的工作表中的名为“Table1”的表格中读取数据,并将所有整数值加倍后输出到另一个名为“Sheet2”的工作表中:

Sub DoubleTableValues()

    ' 引用表格对象
    Dim tbl As ListObject
    Set tbl = ThisWorkbook.Worksheets("Sheet1").ListObjects("Table1")
    
    ' 引用工作表对象
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("Sheet2")
    
    ' 遍历表格中的所有行和列
    Dim row As ListRow
    Dim col As ListColumn
    For Each row In tbl.ListRows
        For Each col In tbl.ListColumns
            ' 读取单元格的数值并加倍
            Dim value As Variant
            value = row.Range(col.Range.Address).Value
            If IsNumeric(value) And Int(value) = value Then
                value = value * 2
            End If
            ' 输出数值到新的工作表
            ws.Range(col.Range.Address).Offset(row.Index - 1, 0).Value = value
        Next col
    Next row
    
End Sub

在上面的代码中,我们使用了 Offset 属性来确定新写入的数值所在的行和列位置。我们还使用了 IsNumericInt 函数来检查一个数是否为整数。如果是,我们将其加倍并写入新的工作表中。

总结

本文介绍了如何使用 VBA 循环遍历表格中的数据,并提供了一个示例程序来演示如何读取和修改表格中的数据。这对于在 Excel 中进行自动计算和操作非常有用。