officeba >
单独文章
利用VBA处理Excel 2007中的表
在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
声明:欢迎各大网站转载本站文章,还请保留一条能直接指向本站的超级链接,谢谢!
时间:2007-09-24 22:00:31,点击:65824
【OfficeBa论坛】:阅读本文时遇到了什么问题,可以到论坛进行交流!Excel专家邮件:342327115@qq.com(大家在Excel使用中遇到什么问题,可以咨询此邮箱)。