摘 要: 在利用Excel-VBA制作試卷時總會遇到一些無法繞開的問題,如考生信息統(tǒng)一性問題、試卷及標(biāo)準(zhǔn)答案的安全問題、計時問題、隨機抽題問題、試卷密碼問題、答案不惟一問題等。只要其中有一個問題不能合理解決,程序就不能正常使用。為此,對這些問題逐一進(jìn)行了分析和探討,并成功找出了解決途徑,使利用Exce-VBA制作的試卷成功投入教學(xué),收到了良好的教學(xué)效果。
關(guān)鍵詞: Excel; VBA; 試卷; 數(shù)據(jù)安全
中圖分類號:TP319 文獻(xiàn)標(biāo)志碼:B 文章編號:1006-8228(2013)03-39-03
0 引言
考試是促進(jìn)學(xué)生學(xué)習(xí)的有效途徑,也是了解教與學(xué)效果的重要手段。隨著計算機的不斷普及,無紙化考試早已進(jìn)入校門,用計算機出卷和閱卷已屢見不鮮。其中在Excel中用VBA制作客觀題類試卷是最簡單也是最實用的一種方法,對此已有許多文章談及。本人在實際編制過程中碰到許多難以解決但又必須解決的問題,通過查閱有關(guān)資料和研究,找出了一些解決方法與同仁一起分享。
1 制作試卷的基本思路
⑴ 數(shù)據(jù)存儲:將判斷、單選、填空題按工作表分類存放在三張表中,另有一個試卷工作表顯示試題并用作答題。
⑵ 使用方法:考慮到局域網(wǎng)的不穩(wěn)定性和使用的局限性,本人將試卷做成了單機程序文檔。考前將工作簿發(fā)往學(xué)生端。學(xué)生打開工作簿時,首先輸入班級、學(xué)號、姓名等基本信息,接著從題庫中抽題送入試卷工作表,同時計時開始。測試試卷界面如圖1所示。結(jié)束考試時,點擊右上方的“結(jié)束本次測驗”按鈕結(jié)束考試,停止計時,顯示標(biāo)準(zhǔn)答案和得分情況,最后將工作簿文件發(fā)往教師端。
2 編程時必須解決的幾個重要問題
2.1 考生基本信息的統(tǒng)一性問題
進(jìn)入考試前學(xué)生先要輸入班級、學(xué)號、姓名等信息。為了以后閱卷和管理的方便性,對輸入的信息要規(guī)范,如我院學(xué)生的學(xué)號為10位數(shù)字,為了避免輸入錯誤,我們?nèi)∠藢W(xué)生輸入學(xué)號的方式,采用的辦法是預(yù)先將相關(guān)信息存入Excel工作表“名單”中,在打開工作簿時首先顯示如圖2所示登錄窗口,用窗口中的下拉列表選擇班級和姓名。
2.2 數(shù)據(jù)安全性問題
數(shù)據(jù)安全主要包括:試題庫數(shù)據(jù)的安全、考生試題的安全、交卷后學(xué)生解答的安全。
試題庫是抽題的依據(jù),試題庫中除了存放所有題目內(nèi)容外,還存放了標(biāo)準(zhǔn)答案。為保證不泄漏,必須將相關(guān)工作表隱藏起來,若用菜單實現(xiàn)隱藏,用戶很容易通過對應(yīng)菜單取消隱藏。所以我們的辦法是在VBE環(huán)境中將工作表的Visible屬性設(shè)置為2-xlSheetVeryHidden進(jìn)行徹底隱藏,同時添加工程查看密碼禁止學(xué)生打開工程修改Visible屬性。另外在學(xué)生成功登錄后,程序?qū)⑾嚓P(guān)工作表刪除,以徹底保護(hù)試題庫中的數(shù)據(jù)。
考生試題的安全主要是防止學(xué)生有意或無意地修改考生基本信息和試卷內(nèi)容。通過單元格格式對話框保護(hù)選項卡中的鎖定復(fù)選框與保護(hù)工作表中設(shè)置密碼聯(lián)合作用,使除了考生答題所用單元格之外的其余所有單元格均為只讀,從而保護(hù)其中的數(shù)據(jù)。
學(xué)生交卷后,通過上面的方法,將整個試卷工作表進(jìn)行只讀設(shè)置。這樣學(xué)生可以反復(fù)打開工作簿查看試卷和標(biāo)準(zhǔn)答案但又不能修改答案。
2.3 計時問題
倒計時是提醒學(xué)生剩余考試時間以及時間到自動保存退出的必要功能。倒計時可用二種方法實現(xiàn):一是用利用系統(tǒng)時鐘。這種方法存在的問題是,如果學(xué)生在考試過程中修改時鐘,則會給學(xué)生提供了作弊的可能;二是用一全局變量遞減實現(xiàn)倒計時。這種方法也存在問題,在程序使用過程中發(fā)現(xiàn),當(dāng)某個單元格處于編輯狀態(tài)時,OnTime過程是不運行的,這無意中延長了學(xué)生的考試時間,失去了限時考試的作用。我們將上述二種方法結(jié)合起來,圓滿地解決了計時問題。其代碼如下:
2.4 隨機抽題問題
為了在題庫中抽出指定個數(shù)的不重復(fù)試題,編制了一個產(chǎn)生不重復(fù)題號的過程th。該過程的功能是:生成n個1到max的互不相同的隨機題號送入t1(x,100)數(shù)組。
2.5 防止學(xué)生用以前的試卷交卷問題
由于本試卷是開放性的,學(xué)生在做好備份的前提下,可以反復(fù)做題,以達(dá)到復(fù)習(xí)的目的。但這也帶來了新的問題,就是當(dāng)考試時,作弊的學(xué)生會把以前做好的高分試卷作為本次試卷上交。本人的解決辦法是:在考試前給試卷設(shè)置一個新的試卷密碼存放在文檔中,再把該試卷文檔發(fā)給學(xué)生并要求一定要用該文檔做題。學(xué)生做完題目交卷后,教師可以通過查看試卷密碼以判斷本張試卷的真假。
2.6 多答案試題的判閱問題
在填空題中,經(jīng)常會出現(xiàn)答案不惟一的情況。如:cpu或CPU或中央處理器,當(dāng)學(xué)生填入任何一個答案都應(yīng)該批為正確。所以用=if()函數(shù)進(jìn)行惟一比對有時就不能正確批閱。為此本人編制一個py的自定義函數(shù),該函數(shù)有二個自變量,第一個是學(xué)生解答,第二是標(biāo)準(zhǔn)答案。如上題,標(biāo)準(zhǔn)答案可以寫成:cpu或CPU或中央處理器。以“或”字作為填空多解的分隔符。
需要說明的是:①從上面的程序代碼中可看出,標(biāo)準(zhǔn)答案的多解不能超過3個,如有更多可參照修改代碼;②以“或”作為多解的分隔符,所以“或”字本身不能作為解答的一部分。
3 結(jié)束語
學(xué)生完成試題后形成了一個個工作簿文件,其題目和得分均存放在各自的工作簿中,這并不便于教師對整體情況的了解。為此,編制了一個試卷匯總的工作簿文件,通過VBA程序?qū)⑺袑W(xué)生的試卷復(fù)制到一張“試卷”工作表內(nèi)以便查看,再將學(xué)號、姓名、得分等匯總信息寫入另一張“匯總”工作表中。另外在條件許可的情況下,可以將學(xué)生的試卷直接發(fā)往教師端,使教師的查詢更加方便。
參考文獻(xiàn):
[1] 歐陽明慧.ExcelVBA技巧實例手冊(第1版)[M].北京希望電子出版
社,2009.
[2] 韓小良.Excel VBA高效辦公實用寶典(第1版)[M].中國鐵道出版社,
2009.
[3] 趙志東.Excel VBA技巧應(yīng)用(第1版)[M].人民郵電出版社,2007.
[4] 伍云輝.Excel VBA典型實例大全(第1版)[M].電子工業(yè)出版社,
2008.
[5] 韓小良.Excel VBA活用范例大辭典(第2版)[M].中國鐵道出版社,
2011.