遍历表
本节介绍的代码遍历工作表或工作簿中所有表。
遍历工作表中所有表
如果想要在工作表的每一表中运行代码,必须遍历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
未完待续……