利用VBA处理Excel 2007中的表

在Excel对象模型中,表(Table)由ListObjects对象代表。下面列举一些在Excel 2007中使用VBA处理表的示例代码。


http://www.blue1000.com/bkhtml/c118/2008-11/59082.htm


- - - - - - - - - - - - - - - - - - - -
创建表
下面的代码将某区域转换为表。
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
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值