Excel VBA 编写一个实际工作应用的程序

如果我们想要去用VBA实现某一个功能,那么我们是如何去实现这个功能呢?我们接下来要和你说的是一个用VBA去实现一个目的,我们需要把我们的目的进行拆解,分析问题,解决问题,写出代码,最后完成需求。

Excel VBA 编写一个实际工作应用的程序

举一个例子,我们现在需要编写一个程序,想要实现的功能是排序工作表,让按照我们指定的规则进行排序,方便我们整理数据。

现在我们的终极目的有了,那么我们就应该去一步一步的分析问题,转化为我们用代码可以实现的需求。如下为我们的分析过程:

A、 如何实现排序功能,我们可以利用工作表的排序功能进行实现

B、 高效可靠

C、 对于任何工作表都可以通过,轻易进行执行

D、 屏蔽错误,或者可以说解决所有的可能出现的问题

Excel VBA 编写一个实际工作应用的程序

首先解决我们第一问题,排序的代码,我们要是不知道的话,我们可以通过录制宏来得到我们所需要的源代码,如下图所示:

但是我们的代码其实是不支持工作表排序的,我们后面可以通过对工作表的名称进行排序,然后让他们排排站就可达到我的所需的目的。

我们现在开始代码的编写过程,我们利用的对工作表的名称进行排序,然后让他们按照规则进行排序站位即可。

第一步编写排序过程,我们采用冒泡排序法,其实这个方法可以对数组进行排序,但是速度不是很快,优点是简单易写。冒泡排序法采用用循环和判断语句进行处理。具体原理为循环对每一个元素进行循环,然后利用判断进行比较大小,然后交换位置,这样就达到排序的要求,代码如下:

第二步,让程序根据我的排序代码提供排排站功能,我们利用排序的代码进行排序移动,代码如下:

Excel VBA 编写一个实际工作应用的程序

其实这个代码就是我们的录制宏而达到的代码,进行修改的。如下为我们最新完成的代码集合,有需要的可以找我。

Sub SortSheets()
Dim SheetNames() As String
Dim i As Long
Dim SheetCount As Long
Dim OldActive As Object

If ActiveWorkbook Is Nothing Then Exit Sub
SheetCount = ActiveWorkbook.Sheets.Count
If ActiveWorkbook.ProtectStructure Then
MsgBox ActiveWorkbook.Name & " is protected.", _
vbCritical, "Cannot Sort Sheets."
Exit Sub
End If
If MsgBox("Sort the sheets in the active workbook?", _
vbQuestion + vbYesNo) <> vbYes Then Exit Sub
Application.EnableCancelKey = xlDisabled
SheetCount = ActiveWorkbook.Sheets.Count
ReDim SheetNames(1 To SheetCount)
Set OldActive = ActiveSheet
For i = 1 To SheetCount
SheetNames(i) = ActiveWorkbook.Sheets(i).Name
Next i
Call BubbleSort(SheetNames)
Application.ScreenUpdating = False
For i = 1 To SheetCount
ActiveWorkbook.Sheets(SheetNames(i)).Move _
Before:=ActiveWorkbook.Sheets(i)
Next i
OldActive.Activate

End Sub
Sub BubbleSort(List() As String)
Dim First As Long, Last As Long
Dim i As Long, j As Long
Dim Temp As String
First = LBound(List)
Last = UBound(List)
For i = First To Last - 1
For j = i + 1 To Last
If UCase(List(i)) > UCase(List(j)) Then
Temp = List(j)

List(j) = List(i)
List(i) = Temp
End If
Next j
Next i
End Sub

虽然这个不是万能的排序,在我们排序时候会出现问题,比如在10和2之间排序的话,就会不太听话的,所以没有万能的程序,只有不断的修改代码去实现功能。

以上就是我们今天和大家说的代码对工作表进行排序工作,其实VBA代码学习起来非常简单,他就是一个脚本语言的存在,他有自己的条条框框,你按照他的游戏规则来写代码就可以。如果有不明白的或者不懂的可以在下方留言,我们会一一解答的。

Excel VBA 编写一个实际工作应用的程序

我是Excel教案,关注我持续分享更多的Excel技巧!


分享到:


相關文章: