ExcelVba编程实例
这是本人近来学习VBA的笔记,有很多方法已经在工作中运用,大大提高了工作效率,希望我的笔记对一些初学者有所帮助。
下面有很些实例摘自<<Excel2003高级vba编程>>范例文件,本人按照自己的思维做了适当的修改,有不妥之处,还望指正!
第九章 工作表排序
本章只有一个范例文件,主要功能对活动工作簿中所有工作表进行排序。
算法说明:
1、统计活动工作簿中工作表的数量 WsCount=unt
2、定义一个一维数组a(1 to wscount)主要用来存放活动工作簿中所有工作表名称字符串
3、利用for each ws in activeworkbook.worksheets 循环将活动工作簿中所有数量赋值给一维数组
4、利用冒泡法对数组进行排序(源文件对排序单独写了一个过程)
5、利用worksheets的move方法以及sheets(i)(他代表工作簿中从左到右第i张工作表)移动工作表
代码:
Sub SortSheet()
Dim WsCount As Integer
Dim WsArray() As String
Dim Ws As Worksheet
On Error Resume Next
WsCount = ActiveWorkbook.Worksheets.Count
ReDim WsArray(1 To WsCount)
If ActiveWorkbook.ProtectStructure Then
MsgBox ActiveWorkbook.Name & " 被保护,不能进行排序,请解除保护后排序", _
vbCritical, "不能排序工作表"
vba排序函数sort用法Exit Sub
End If
For Each Ws In ActiveWorkbook.Worksheets
t = t + 1
WsArray(t) = Ws.Name
Next Ws
'对数组进行排序
For i = 1 To UBound(WsArray) - 1
For j = i + 1 To UBound(WsArray)
If WsArray(i) > WsArray(j) Then
t = WsArray(i)
WsArray(i) = WsArray(j)
WsArray(j) = t
End If
Next j
Next i
'利用Move方法以及Sheets(i)移动工作表,按指定的顺序排列
For i = 1 To WsCount
Worksheets(WsArray(i)).Move before:=Sheets(i)
Next i
End Sub
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论