计算机Excel应用案例,Excel VBA在Office中的应用案例
摘要:VBA是一種內(nèi)嵌于某種應(yīng)用程序的編程語言,如Excel。編程人員可以通過VBA語言,操縱Excel對象模型實(shí)現(xiàn)自動處理數(shù)據(jù)的功能。該文介紹了三個VBA在日常辦公與教學(xué)中的Excel應(yīng)用案例:Excel操作題自動評分、數(shù)據(jù)快捷輸入、合并數(shù)據(jù)表記錄。這三個應(yīng)用案例很有代表性,通過簡單地修改就可以應(yīng)用到其它方面。
關(guān)鍵詞:Excel;VBA;辦公自動化
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2013)12-2819-03
VBA是一種內(nèi)嵌于某種應(yīng)用程序的編程語言,如Excel。通過VBA的編程,可以使Excel自動完成一些工作,如大批量的數(shù)據(jù)復(fù)制與粘貼、工作表的合并。VBA是VB語言的子集,只要掌握了VB語言就能自然地應(yīng)用VBA。VBA是針對應(yīng)用程序編程,確切的說是針對應(yīng)用程序的對象模型編程。Excel作為一款優(yōu)秀的數(shù)據(jù)處理軟件,通過可視化操作,就能實(shí)現(xiàn)強(qiáng)大的數(shù)據(jù)處理功能。同時,它還對外公布了它的對象模型,編程人員可以通過VBA語言,操縱Excel相關(guān)對象而實(shí)現(xiàn)數(shù)據(jù)處理功能。VBA語言給Excel插上了飛翔的翅膀。
以下通過三個日常辦公與教學(xué)中的常用案例,介紹VBA在Excel中的高級應(yīng)用。
1 Excel操作題自動評分
在Excel教學(xué)中,我們經(jīng)常會布置一些Excel操作題給學(xué)生做,但這些操作題如何不是某個考試軟件中的題目,往往要由教師手動給學(xué)生評分,一方面工作量很大,另一方面,往往帶有主觀意見,對學(xué)生不公平。其實(shí)我們可以利用VBA編程,實(shí)現(xiàn)操作題自動評分。
例如有這么一個操作題:
1)選擇工作表sheet1,用求平均值函數(shù)求出每人的平均成績,依次放在E3到E6的單元格中。
2)把標(biāo)題行A1-E1合并單元格,把標(biāo)題“學(xué)生成績表”設(shè)為20號宋體,居中,并把字體設(shè)置為紅色。
3)把sheet1工作表名改為:學(xué)生成績表
我們可以編寫如下程序,實(shí)現(xiàn)該操作題自動評分。
Sub 自動評分()
Dim Grade As Integer ‘Grade-分?jǐn)?shù)
For i = 3 To 6
If Range("E" & i).Formula = "=AVERAGE(B" & i & ":D" & i & ")" Then Grade = Grade + 2
Next
If Range("A1:E1").MergeCells = True Then Grade = Grade + 2
If Range("A1:E1").HorizontalAlignment = xlCenter Then Grade = Grade + 2
If Range("A1:E1").Font.Size = 20 Then Grade = Grade + 2
If Range("A1:E1").Font.ColorIndex = 3 Then Grade = Grade + 3
If ActiveSheet.Name = "學(xué)生成績表" Then Grade = Grade + 3
MsgBox Grade
End Sub
編程思想其實(shí)很簡單,就是用IF語句對操作題的各個對象屬性進(jìn)行檢測,如符合要求,則加分,否則不加。如對對象屬性不熟悉,可以先錄制宏,得到相應(yīng)的屬性代碼。
2 數(shù)據(jù)快速輸入
在日常辦公中,經(jīng)常會遇到這種情況,Excel的 某一列就是常用的幾個數(shù)據(jù),如某一工作表第三列是職稱,教師中常見的職稱就是教授、副教授、講師和助教。對于這些數(shù)據(jù),我們可以分別以代號來表示,如1為教授、2為副教授、3為講師、4為助教。編寫如下代碼,那只要輸入1,應(yīng)自動轉(zhuǎn)變?yōu)榻淌?#xff0c;其它類似。
Private Sub Worksheet_Change(ByVal Target As Range)
‘ worksheet_change(),是工作表數(shù)據(jù)發(fā)生改變的事件
‘Target是當(dāng)前操作的單元格
If Target.Column = 3 Then
‘第三列職稱,如要在其它列中實(shí)現(xiàn)這個功能,則改為其它列
If Target.Value = 1 Then Target.Value = "教授"
If Target.Value = 2 Then Target.Value = "副教授"
If Target.Value = 3 Then Target.Value = "講師"
If Target.Value = 4 Then Target.Value = "助教"
‘編號與職稱相對應(yīng),如性別,1-男,2-女,則相應(yīng)改變其代碼。
End If
End Sub
3 合并數(shù)據(jù)表記錄
我們在辦公中經(jīng)常會遇到這種情況,組織部門需要收集單位員工在某一方面的信息,這時工作人員首先會向員工發(fā)一份Excel文件,其中包含有要求員工填寫的相關(guān)信息,有的還會給出了一個樣例。員工按要求填寫好信息后發(fā)回給工作人員,那工作人員需要將每一位員工的工作表打開,復(fù)制相關(guān)信息粘貼到一個總表中。如果這樣的工作表很多,如幾百上千份,這將是一個非常繁瑣而且容易出錯的工作。那么我們能不能用VBA編程實(shí)現(xiàn)自動合并這些數(shù)據(jù)表的記錄呢?
如某高校圖書館面向全校各部門征集圖書采購信息,工作人員制作了圖表1的Excel工作表,并將工作表分發(fā)給各部門。
圖1
Excel文件只有一個工作表(sheet1),工作表的第一行是表頭信息,第二行是收集圖書的信息,第三行給出了一個填寫樣例,并要求員工不要刪除。員工按要求填寫好數(shù)據(jù)發(fā)回給工作人員,工作人員將這些文件放在一個文件目錄下,并新建一個新的Excel文件,命名為圖書信息總表.xls。
這些Excel工作表具有相同的字段信息,除第一條記錄外,我們需要將其它工作表的記錄合并到圖書信息總表中。在總表中編寫宏代碼,就可以實(shí)現(xiàn)。代碼及相應(yīng)解釋如下。
Sub HB()
'變量說明:MyPath -文件路徑;m-分表的行數(shù);n-總表的當(dāng)前行數(shù)
'XLSName-分表的文件名;WB-分表的工作簿變量
Dim MyPath As String, XlsName As String
Dim m As Integer, n As Integer
Dim WB As Workbook
Application.ScreenUpdating = True
MyPath = ThisWorkbook.Path '獲取當(dāng)前文件的路徑
If Right(MyPath, 1) "\" Then MyPath = MyPath & "\"
'視情況,將路徑補(bǔ)充完整
XlsName = Dir(MyPath & "*.xls") '得到當(dāng)前路徑下的第一個EXCEL文件
Do While XlsName ""
If XlsName ThisWorkbook.Name Then
'除總表之外的分表進(jìn)行合并記錄到總表
Set WB = Application.Workbooks.Open(MyPath & XlsName) '打開分表
m = WB.Sheets(1).[a65536].End(xlUp).Row '得到分表的行數(shù)
WB.Sheets(1).Range("a3:h" & m).Copy
'復(fù)制分表a列到h列,第四行到最后一行區(qū)域的記錄
n = ThisWorkbook.Sheets(1).[a65536].End(xlUp).Row '得到總表當(dāng)前的行數(shù)
ThisWorkbook.Sheets(1).Paste Destination:=ThisWorkbook.Sheets(1).Range("a" & n + 1)
'從總表當(dāng)前最后一行的下一行開始粘貼內(nèi)容,即追加記錄
Application.CutCopyMode = False '清空剪貼板內(nèi)容
WB.Close '關(guān)閉分表
End If
XlsName = Dir '取得下一個分表文件名
Loop
End Sub
上述程序代碼具有很大的通用性,對于類似的辦公操作,只要按上述要求,并將代碼復(fù)制到總表,根據(jù)情況修改WB.Sheets(1).Range("a3:h" & m).Copy中的參數(shù)即可,如果是從第10行開始復(fù)制到最后一行,工作表的列數(shù)為B到P列,則該語句改為WB.Sheets(1).Range("B10:P" & m).Copy。
4 結(jié)束語
通過以上三個案例,足以說明VBA在Excel中的地位。通過VBA編程,可以使Excel的功能更為強(qiáng)大,可以極大提高我們的工作效率。
參考文獻(xiàn):
[1] 博彥科技.Office VBA編程高手[M].北京:北京大學(xué)出版社,2001.
[2] 韓小良.Excel VBA工資管理應(yīng)用案例詳解[M].北京:中國鐵道出版社,2006.
[3] 陳永強(qiáng).例學(xué)VBA Excel/Access/PowerPoint中的VBA高效應(yīng)用[M].北京:中國鐵道出版社,2010.
總結(jié)
以上是生活随笔為你收集整理的计算机Excel应用案例,Excel VBA在Office中的应用案例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring系列(五):@Lazy懒加载
- 下一篇: 网络知识:视频监控传输带宽与存储容量的计