利用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
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
相关文章推荐
- VB程序多国语言的实现
- VB.NET可选参数例子
- 关于Visual Basic 6.0类开发
- vb中的日期控件Date TimerPicker
- ext.net combobox 的初始化
- 关闭输入法及格式化VBA代码工具
- 行消隐(HBlank)与场消隐(VBlank)
- C# 里调用vb的inputbox弹出窗
- 获得系统日期时间
- vb中自动调整控件的大小
- vb吐槽班09 难得正经一回。。。
- 组合查询
- 机房收费系统——VB将MSHflexgrid控件中的数据导出为Excel
- mipsel-uclibc交叉编译dvbspi
- 【VBA】VBA实现统计目标范围内重复值次数
- VB.NET中安装部署
- VB中怎么换行
- 用vbs打开文件
- 机房收费系统2——vb与报表的交互
- 用代码给VBA添加工程密码