📅  最后修改于: 2023-12-03 14:48:17.307000             🧑  作者: Mango
在 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
在上面的代码中,我们使用了 ListRow
和 ListColumn
对象来引用表格中的行和列。对于每个行和列,我们使用 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
属性来确定新写入的数值所在的行和列位置。我们还使用了 IsNumeric
和 Int
函数来检查一个数是否为整数。如果是,我们将其加倍并写入新的工作表中。
本文介绍了如何使用 VBA 循环遍历表格中的数据,并提供了一个示例程序来演示如何读取和修改表格中的数据。这对于在 Excel 中进行自动计算和操作非常有用。