您的位置:首页 > 编程语言 > VB

利用VBA处理Excel 2007中的表

2013-11-19 19:27 477 查看
在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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: