首页 > 单独文章 > 正文

利用VBA处理Excel 2007中的表

时间:2007-09-24 22:00:31 作者:officeba 【认证】
在Excel对象模型中,表(Table)由ListObjects对象代表。下面列举一些在Excel 2007中使用VBA处理表的示例代码。
- - - - - - - - - - - - - - - - - - - -
创建表
下面的代码将某区域转换为表。
Sub CreateTable()
    ActiveSheet.ListObjects.Add(xlSrcRange, Range("$B$1:$D$16"), , xlYes).Name = "Table1"
    ActiveSheet.ListObjects("Table1").TableStyle = "TableStyleLight2"
End Sub
下面的代码改变表的格式,即改变表底部的线条样式:
Sub ChangeTableStyles()
    ActiveWorkbook.TableStyles(2).TableStyleElements(xlWholeTable) _
        .Borders(xlEdgeBottom).LineStyle = xlDash
End Sub
- - - - - - - - - - - - - - - - - - - -
列出所有的表
下面的代码列出当前工作表中所有的表及其地址:
Sub FindAllTablesOnSheet()
    Dim oSh As Worksheet
    Dim oLo As ListObject
    Set oSh = ActiveSheet
    For Each oLo In oSh.ListObjects
        Application.Goto oLo.Range
        MsgBox "发现表: " & oLo.Name & ", " & oLo.Range.Address
    Next
End Sub
- - - - - - - - - - - - - - - - - - - -
在表中进行选择
下面的示例代码使用了不同的方式,选择特定的表中指定的部分。
Sub SelectingPartOfTable()
  Dim oSh As Worksheet
  Set oSh = ActiveSheet
  With oSh.ListObjects("Table1")
    MsgBox .Name
   '选择整个表
    .Range.Select
    '仅选择表中的数据区域
    .DataBodyRange.Select
    '选择第3列
    .ListColumns(3).Range.Select
    '选择第一列中的数据区域
    .ListColumns(1).DataBodyRange.Select
    '只选择第4行(标题行不计在内!)
    .ListRows(4).Range.Select
  End With
   
  '选择整列(仅数据)
  oSh.Range("Table1[列2]").Select
  '选择整列(数据加标题)
  oSh.Range("Table1[[#All],[列1]]").Select
  '选择表中的整个数据部分
  oSh.Range("Table1").Select
  '选择整个表
  oSh.Range("Table1[#All]").Select
  '选择表中的一行
  oSh.Range("A5:F5").Select
End Sub
- - - - - - - - - - - - - - - - - - - -
插入行和列
Sub TableInsertingExamples()
  '在指定的位置插入
  Selection.ListObject.ListColumns.Add Position:=4
  '在右侧插入
  Selection.ListObject.ListColumns.Add
  '在上方插入
  Selection.ListObject.ListRows.Add (11)
  '在下方插入
  Selection.ListObject.ListRows.Add AlwaysInsert:=True
End Sub
- - - - - - - - - - - - - - - - - - - -
在表中添加批注
Sub AddComment2Table()
    Dim oSh As Worksheet
    Set oSh = ActiveSheet
    '在表中添加一个批注
    oSh.ListObjects("Table1").Comment = "这是表的批注"
End Sub
- - - - - - - - - - - - - - - - - - - -
将表转换为正常的区域
Sub RemoveTableStyle()
    Dim oSh As Worksheet
    Set oSh = ActiveSheet
    '删除表或列表样式
    oSh.ListObjects("Table1").Unlist
End Subs
- - - - - - - - - - - - - - - - - - - -
排序和筛选
Sub SortingAndFiltering()
  '下面的代码仅在Excel 2007中工作
  With ActiveWorkbook.Worksheets("Sheet1").ListObjects("Table1")
    .Sort.SortFields.Clear
    .Sort.SortFields.Add( _
      Range("Table1[[#All],[列2]]"), xlSortOnCellColor, xlAscending, , _
         xlSortNormal).SortOnValue.Color = RGB(255, 235, 156)
    With .Sort
      .Header = xlYes
      .MatchCase = False
      .Orientation = xlTopToBottom
      .SortMethod = xlPinYin
      .Apply
    End With
  End With
  '下面的代码使用在2003中
  ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=2, _
      Criteria1:=RGB(156, 0, 6), Operator:=xlFilterFontColor
End Sub

相关文章

同类最新