【摘 要】在EXCEL中如何修改VBA代碼,來達(dá)到快速錄入數(shù)據(jù)的目的。
【關(guān)鍵詞】數(shù)據(jù)錄入;代碼;單元格;change事件
每一個學(xué)期初和學(xué)期末,都有許多數(shù)據(jù)需要采集和上報,這此數(shù)據(jù)在錄入過程中不僅耗費了大量的時間,還很容易出錯,如圖1所示的學(xué)生情況信息表,在通常情況下,我們會逐條錄入這些數(shù)據(jù)的,也有的同志會通過自定義單元格格式等技巧來提高自己的錄入效率,但我想看過本人為您介紹的錄入技巧后,您一定會大有收獲。
圖1 學(xué)生情況信息表
一、案例分析
不難發(fā)現(xiàn)在“編號”字段中(第一列),每位學(xué)生的編號前四位是相同的,即“2012”,所不同的是后面的班級和學(xué)號不同,如果我們在輸入過程中前四位可以自動添加進(jìn)去,那就方便多了。
對于學(xué)生姓名沒有規(guī)律性,所以“姓名”列(第二列)中內(nèi)容只能是一個一個錄入了,沒有辦法“偷懶”。
在出生年月一列(第三列)中,如果我們只輸入數(shù)字,就能顯示年月日那樣就會省事多了,如我輸入“19941008”,按回車鍵后,系統(tǒng)就顯是“1994年10月8日”。
在性別列(第四列)中,只有“男”或“女”的填充可能,如果我們能夠按數(shù)字鍵1就顯示“男”,按數(shù)字鍵2就顯示“女”,那不是“太美”了嘛。
在“畢業(yè)學(xué)?!币涣兄校ǖ谖辶校┲?,因為我們的學(xué)生來源只有五所中學(xué),所以如果能做成下拉列表形式,我們只要在里面選擇一下就可以了。
至于最后列“政治面貌”列,只有兩種可能,即團員和非團員。所以做成性別列,類似就可以了。
二、實現(xiàn)方法
通過對上述分析,我們不難發(fā)現(xiàn),數(shù)據(jù)中的1、3、4、6列中的數(shù)據(jù)都要是用戶輸入后由系統(tǒng)自動進(jìn)行轉(zhuǎn)換的,我們可以通過表對象中的Change事件編程來實現(xiàn)。數(shù)據(jù)的第5列是通過選中某個單元格對象再進(jìn)行選擇操作的,只需對工作表的SelectionChange來編寫代碼,操作步驟如下:按Alt+F11組合鍵打開VBA編輯器,雙擊窗口左側(cè)的Sheet1對象,在其右側(cè)的代碼窗口中對工作表對象的Change事件和SelectionChange事件分別編寫VBA代碼。
Private Sub Worksheet_Change(ByVal
Target As Range)
On Error GoTo Error
‘設(shè)置陷阱
Select Case Target.Column
Case 1
Target.NumberFormatLocal=\"\"\"2012\"
\"0000\"
‘第一列自動套用格式在單元格數(shù)字前加2012
Case 3
Target.NumberFormatLocal=”0000””
年””00””月””00””日”””
‘第3列將輸入的8位數(shù)更改為年月日格式
Case 4
If Target.Value=1 Then
Target.Value=”男”
Else
If Target.Value=2 Then
Target.Value=”女”
End If
End If
‘第4列輸入1即顯示為男,輸入2顯示為女
Case 6
If Target.Value=3 Then
Target.Value=”團員”
Else
If Target.Value=4 Then
Target.Value=”非團員”
End If
End If
‘第6列輸入3即顯示為團員,輸入4顯示為非團員
End Select
‘出現(xiàn)錯誤時退出程序
Error:
Exit Sub
End Sub
在Change事件中,主要是通過Select case/end select分支結(jié)構(gòu)判斷用戶在哪一列中輸入數(shù)據(jù),在EXCEL中的A列為1,B列為2,以此類推,然后再轉(zhuǎn)換為相應(yīng)的分支結(jié)構(gòu)語句中去執(zhí)行相應(yīng)的代碼,完成后退出整個分支結(jié)構(gòu)。
第五列即畢業(yè)學(xué)校列,我們通過下拉菜單來實現(xiàn):
Private Sub worksheet_selectionchange(ByVal target As Range)
On Error GoTo Error
If target.Column=5 Then
Application.SendKeys\"%{down}\"
‘自動打開下拉菜單,設(shè)置第五列的數(shù)據(jù)有效性為序列填充
target.Validation.Add Type:=xlValidateList,F(xiàn)ormula1:=\"市一中,市二中,省實驗中學(xué),市三中\(zhòng)"
End if
Error:
Exit sub’
End sub
在Selectionchange事件中,首先通過判斷語句判斷當(dāng)前選中是否為第三者列,即畢業(yè)學(xué)校列,如果是則自動打開下拉菜單,同時顯示所選項目的列表,否則退當(dāng)觸發(fā)的事件。
以上事件在執(zhí)行過程中如果出錯則自動轉(zhuǎn)到子程序error,退出當(dāng)前的事件的執(zhí)行。
三、數(shù)據(jù)錄入測試
為了方便測試,建議大家將“按回車鍵后插入點的移動方向”改為“向右”,(單擊工具菜單中的編輯選項卡進(jìn)行設(shè)置)這樣會更加符合我們平時的錄入表格的習(xí)慣。
在“編號”列中輸入學(xué)生編號的后四位按回車鍵,系統(tǒng)將會自動添加前四位2012。
在“出生年月日”列中直接輸入8位數(shù)回車后,系統(tǒng)會自動在前四位后加“年”,中間兩位后加“月”,最后加上“日”。
在“性別”列中,按數(shù)字鍵1,則顯示為“男”,按數(shù)字鍵2,則顯示為“女”。同樣政治面貌一列中,按數(shù)字鍵3,顯示為“團員”,按數(shù)字鍵4,顯示為“非團員”。
在“畢業(yè)學(xué)校”一列中,中需單擊單元格中的任一位置就可以看到自動彈出的下拉菜單,然后就可以從列表中選擇相應(yīng)的畢業(yè)學(xué)校。(不需要單擊單元格右側(cè)的下拉箭頭按鈕)
經(jīng)過這樣設(shè)計的表格,即使是初學(xué)Excel的朋友也會得心就手。如果要幾個人協(xié)同輸入一大批數(shù)據(jù),不僅會做到格式上的高度統(tǒng)一,而且會節(jié)約很多的時間,同時又成倍的提高了工作效率,何樂而不會呢?在實際運用的過程中,大家可以根據(jù)自己的修改代碼中相應(yīng)的屬性。需要注意的是,代碼一旦編寫完成后如果要添加或刪除,請及時對代碼中的列號進(jìn)行相應(yīng)的調(diào)整。
作者簡介:劉金鳳(1968—),女,延邊大學(xué)經(jīng)濟管理專業(yè)畢業(yè),高級講師,現(xiàn)供職于延邊職業(yè)技術(shù)學(xué)院計算機系。