劉德飛++周利平++趙磊++李奎
摘 要:ExcelVBA是Excel基于VB開發的腳本語言。它具有強大的Excel使用擴展功能,完全可實現Excel中的查詢統計;同時可提高辦公中Excel的使用效率。單獨招生錄取查詢統計僅是招生錄取中一個小環節,沒有必要使用較高成本開發系統軟件實現查詢統計功能。ExcelVBA可在查詢中大大提高工作效率,實現多人共同統計,設計和開發該系統對ExcelVBA的擴展運用有一定的探索實踐作用。
關鍵詞:ExcelVBA 單獨招生錄取 查詢統計 查詢系統 統計系統
中圖分類號:TP311 文獻標識碼:A 文章編號:1672-3791(2016)11(b)-0017-02
1 問題背景
云南機電職業技術學院位于云南昆明,是一所以機電專業為主要培養對象的高職院校,被評為“云南省省級示范性高等職業院校”與“國家示范性高等職業院校”的骨干高職院校,具備云南省單獨招生資格,報考考生較多、競爭激烈,因此做好考生的招生服務顯得更為重要。
考生通過筆試、面試后學院會將名單通過單獨招生考試網發布給各位考生;因考生可以同時報考多所學校,所以必須由考生確認是否選擇該校就讀,并通過傳真的方式回傳到學院招生就業辦公室,通過傳統的統計、收集Excel、逐個查詢錄入系統;當考生需要查詢時,又返回查詢。具有工作量大、效率不高、不易查詢等特點,又因為就招生這個小環節還沒有必要開發大型系統進行查詢統計,所以筆者探究用ExcelVBA的同一界面完成兩項功能,期望完成對傳統查詢的改善,提高工作效率。
2 ExcelVBA簡介
在Office對于一些煩瑣、重復的操作,用戶可以通過“宏”來實現。“宏”是由一系列指令組合而成的命令集,其本質是VBA代碼組成的程序。VBA是微軟在其開發的應用程序中共享的通用自動化語言。
Visual Basic for Applications(VBA)是Visual Basic的一種宏語言,是微軟開發出來在其桌面應用程序中執行通用的自動化(OLE)任務的編程語言。主要能用來擴展Windows的應用程式功能,特別是Microsoft Office軟件。也可說是一種應用程式視覺化的Basic腳本。該語言于1993年由微軟公司開發的應用程序共享一種通用的自動化語言——Visual Basic For Application(VBA),實際上VBA是寄生于VB應用程序的版本。微軟在1994年發行的Excel5.0版本即具備了VBA的宏功能。
3 系統設計思路
系統開發一般由以下幾個步驟組成:問題分析、需求分析、軟件設計、程序編碼、軟件測試組成。
由于筆者是系統的使用者和開發者,常年從事招生工作,熟悉該校招生中會出現的一些問題和需求。在設計和編碼階段通過積極思考,如果使用過程中出現錯誤完全可實時進行調試和測試。該文僅從實現系統的一些核心模塊進行設計,更好地實現預期效果。主要核心設計模塊如下。
4 系統模塊開發與實現
4.1 前臺界面的設計與實現
準考證號文本框及查詢按鈕,用于識別考生個人信息。點擊查詢按鈕可通過對Excel表格數據的查詢,顯示考生的姓名、性別、考分,擬錄取專業和是否收到傳真,逐一進行核對。
當收到考生傳真時,在“是否就讀”的文本框輸入“是”或“否”,點擊“確認”按鈕以確認對考生傳真的收取。
點擊“清除”按鈕可以清空文本框內容,也可以修正一下信息。圖1是前臺設計顯示效果。
4.2 兩個主要模塊的源代碼
4.2.1 查詢模塊
Public Sub find_Click()
Dim rng As Range
With ActiveSheet
For Each rng In [b2:b1819] //查詢數據的范圍
If rng.Text = tzkzh.Text Then //比對準考證號給相關的內容顯示信息
xzkzh1 = tzkzh.Text
xm1 = rng.Offset(0, 1).Text
xb1 = rng.Offset(0, 2).Text
mscj1 = rng.Offset(0, 3).Text
kf1 = rng.Offset(0, 3).Text
pm1 = rng.Offset(0, 4).Text
lqzy1 = rng.Offset(0, 5).Text
sfjd1 = rng.Offset(0, 6).Text
bz1 = rng.Offset(0, 7).Text
lxdh1 = rng.Offset(0, 11).Text
time1 = rng.Offset(0, 8).Text
tj1 = rng.Offset(0, 9).Text
End If
Next
End With
End Sub
4.2.2 確認統計模塊
Private Sub confirm_Click()
Dim rng As Range, rng1 As Range, m As Integer, n As Integer, k As Integer, l As Integer
With ActiveSheet
For Each rng In [b2:b1890] //查詢范圍
If rng.Text = tzkzh.Text Then
rng.Offset(0, 6) = sfjd1
rng.Offset(0, 7) = bz1
rng.Offset(0, 8) = Now
rng.Offset(0, 9) = tj1
End If
Next
If Len(sfjd1.Text) And Len(tj1.Text) > 0 Then
MsgBox "輸入正確"http://進行數據較驗
Else
MsgBox "確認時是否就讀或是否服從調劑不能為空值"
End If
For Each rng1 In [h2:h1890] //數據統計的實現
If rng1 = "是" Then
m = m + 1
ElseIf rng1 = "否" Then
n = n + 1
Else
k = k + 1
End If
Next
Label17 = m
Label18 = n
wfcz1 = k
End With
End Sub
5 結語
通過設計基本解決了提出的問題,同時還具備以下幾個優點。
(1)無需安裝數據庫。巧妙地把Excel表格中的數據作為原始數據,操作方便、使用便捷、易于不太熟悉計算機的使用者單機使用。
(2)友好輸入界面。界面具有良好的互動性和糾錯功能,防止輸入錯誤并糾錯,實踐證明比實際在Excel中錄入數據的效率提高了。
當然在使用中也存在一些不足,鑒于ExcelVBA的局限性,功能還算是很強大。筆者也將繼續努力在后期不斷完善,力爭把ExcelVBA的功能在工作中做更多擴展。
參考文獻
[1]何非,葉萃娟.Excel VBA高效辦公從入門到精通[M].北京: 中國青年出版社,2008.
[2]羅剛君.Exclel VBA程序開發自學寶典[M].北京:電子工業出版社,2009.