使用VBA自动化处理表的代码大全4

2023-08-30 08:27:05 浏览数 (2)

遍历表

本节介绍的代码遍历工作表或工作簿中所有表。

遍历工作表中所有表

如果想要在工作表的每一表中运行代码,必须遍历ListObjects集合。

代码语言:javascript复制
Sub LoopThroughAllTablesWorksheet()
  '创建变量来包含工作表和表
  Dim ws As Worksheet
  Dim tbl As ListObject
  Set ws = ActiveSheet
  '遍历工作表中的每个表
  For Each tbl In ws.ListObjects
    '这里是处理表的代码....
  Next tbl
End Sub

上述代码中,使用变量tbl来引用表,例如下面的语句修改每个表的样式:

代码语言:javascript复制
tbl.TableStyle = "TableStyleLight15"

遍历工作簿中所有表

下面的代码遍历工作簿中每个工作表中的每个表。

代码语言:javascript复制
Sub LoopThroughAllTablesWorkbook()
  '创建变量来包含工作表和表
  Dim ws As Worksheet
  Dim tbl As ListObject
  '遍历每个工作表
  For Each ws In ActiveWorkbook.Worksheets
    '遍历工作表中每个表
    For Each tbl In ws.ListObjects
      '这里是处理表的代码
    Next tbl
  Next ws
End Sub

正如上面提到的一样,必须使用代表表的变量来引用表。例如,下面的语句为每个表显示汇总行。

代码语言:javascript复制
tbl.ShowTotals = True

添加 & 删除行和列

下面的代码添加和删除表中的行、标题行和汇总行。

向表中添加列

下面的代码向表中添加列。

代码语言:javascript复制
Sub AddColumnToTable()
  '在末尾添加列
  ActiveSheet.ListObjects("myTable").ListColumns.Add
  '在位置2添加列
  ActiveSheet.ListObjects("myTable").ListColumns.Add Position:=2
End Sub

向表中添加行

下面的代码向表中添加行。

代码语言:javascript复制
Sub AddRowsToTable()
  '在底部添加行
  ActiveSheet.ListObjects("myTable").ListRows.Add
  '在第一行添加行
  ActiveSheet.ListObjects("myTable").ListRows.Add Position:=1
End Sub

从表中删除列

要删除列,必需使用列索引号或者列标题。

代码语言:javascript复制
Sub DeleteColumnsFromTable()
  '删除第2列
  ActiveSheet.ListObjects("myTable").ListColumns(2).Delete
  '删除名字指定的列
  ActiveSheet.ListObjects("myTable").ListColumns("二月").Delete
End Sub

从表中删除行

在表结构中,行没有名字,因此仅能通过引用其行号来删除。

代码语言:javascript复制
Sub DeleteRowsFromTable()
  '删除第2行
  ActiveSheet.ListObjects("myTable").ListRows(2).Delete
  '删除多行
  ActiveSheet.ListObjects("myTable").Range.Rows("4:6").Delete
End Sub

向表中添加汇总行

表底部的汇总行用于计算。

代码语言:javascript复制
Sub AddTotalRowToTable()
  '在显示最后一列带有值的汇总行
  ActiveSheet.ListObjects("myTable").ShowTotals = True
  '为“汇总列”修改汇总为平均值
  ActiveSheet.ListObjects("myTable").ListColumns("汇总列").TotalsCalculation = _
    xlTotalsCalculationAverage
  '可以按位置而不是名称添加汇总
  ActiveSheet.ListObjects("myTable").ListColumns(2).TotalsCalculation = _
    xlTotalsCalculationAverage
End Sub

汇总计算的类型如下:

xlTotalsCalculationNone

xlTotalsCalculationAverage

xlTotalsCalculationCount

xlTotalsCalculationCountNums

xlTotalsCalculationMax

xlTotalsCalculationMin

xlTotalsCalculationSum

xlTotalsCalculationStdDev

xlTotalsCalculationVar

表标题可视性

表标题可被打开或关闭。下面的代码隐藏标题。

代码语言:javascript复制
Sub ChangeTableHeader()
  ActiveSheet.ListObjects("myTable").ShowHeaders = False
End Sub

移除自动筛选

可以隐藏表标题中的自动筛选。下面的代码正常运行的前题是,表标题必须是可见的。

代码语言:javascript复制
Sub RemoveAutoFilter()
  ActiveSheet.ListObjects("myTable").ShowAutoFilterDropDown = False
End Sub

未完待续……

0 人点赞