信息專業(yè)學(xué)生開(kāi)發(fā)者思維訓(xùn)練研究
時(shí)間:2022-12-20 09:25:05
導(dǎo)語(yǔ):信息專業(yè)學(xué)生開(kāi)發(fā)者思維訓(xùn)練研究一文來(lái)源于網(wǎng)友上傳,不代表本站觀點(diǎn),若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。
摘要:該文介紹了以基于Excel的信息篩選導(dǎo)出的VBA程序設(shè)計(jì)項(xiàng)目為基礎(chǔ)展開(kāi)針對(duì)初學(xué)者的編程實(shí)踐教學(xué)的過(guò)程。通過(guò)對(duì)教學(xué)任務(wù)的科學(xué)分解和演示訓(xùn)練向程序設(shè)計(jì)初學(xué)者展示了一個(gè)項(xiàng)目開(kāi)發(fā)的思路和流程,對(duì)初學(xué)者進(jìn)一步學(xué)習(xí)和訓(xùn)練具有積極作用。本文采用的項(xiàng)目開(kāi)發(fā)者的探索式學(xué)習(xí)方式區(qū)別于傳統(tǒng)課堂學(xué)習(xí)場(chǎng)景下的系統(tǒng)性學(xué)習(xí)方式,對(duì)新工科教育的落地、對(duì)學(xué)生實(shí)踐應(yīng)用開(kāi)發(fā)能力和創(chuàng)新能力培養(yǎng)有一定的啟發(fā)意義。
關(guān)鍵詞:Excel;VBA編程;零基礎(chǔ)編程;探索式學(xué)習(xí);開(kāi)發(fā)者思維
隨著計(jì)算機(jī)信息處理相關(guān)專業(yè)的發(fā)展,應(yīng)用軟件開(kāi)發(fā)所需的綜合技能逐漸增強(qiáng),所要準(zhǔn)備的技術(shù)儲(chǔ)備也愈加豐富。對(duì)于信息工程相關(guān)專業(yè)的高校學(xué)生而言,應(yīng)用軟件開(kāi)發(fā)是非常重要的技能,然而因?yàn)楦鞣N原因?qū)е聦W(xué)生對(duì)軟件開(kāi)發(fā)具有畏懼心理,不少學(xué)生遲遲不愿動(dòng)手去進(jìn)行相關(guān)的實(shí)踐訓(xùn)練。也有許多學(xué)生花費(fèi)了大量時(shí)間去學(xué)習(xí)、實(shí)踐,還是進(jìn)展緩慢,無(wú)法得到較滿意的作品,從而漸漸失去信心和興趣,轉(zhuǎn)向?qū)W⒂趥鹘y(tǒng)的課堂知識(shí)學(xué)習(xí),只求課程高分,回避主流的應(yīng)用技術(shù)實(shí)踐開(kāi)發(fā)活動(dòng)。沒(méi)有主流應(yīng)用技術(shù)的土壤滋潤(rùn),新工科教育要求的“能力”和“創(chuàng)新”方面必然有所欠缺,學(xué)校和教育工作者又要在其他方面盡可能提供支持,花費(fèi)更大的代價(jià)[1]。作者在教學(xué)一線進(jìn)行了大量的座談和調(diào)研,發(fā)現(xiàn)學(xué)生經(jīng)常習(xí)慣性地帶入課課堂教學(xué)普遍采用的知識(shí)系統(tǒng)學(xué)習(xí)思維模式,而信息專業(yè)實(shí)踐應(yīng)用方面的開(kāi)發(fā)工作往往需要根據(jù)目標(biāo)功能就某方面的知識(shí)進(jìn)行針對(duì)性深入學(xué)習(xí)或者探索式學(xué)習(xí)。這兩種學(xué)習(xí)指導(dǎo)思想本身是根據(jù)目標(biāo)不同而產(chǎn)生,只是在大多數(shù)情況下并不能被清晰區(qū)分,從而導(dǎo)致學(xué)生們?cè)趹?yīng)用能力學(xué)習(xí)方面付出代價(jià)較高。這樣的情況下,學(xué)生對(duì)開(kāi)發(fā)實(shí)踐可能會(huì)產(chǎn)生畏懼心理,還有些學(xué)生有了課堂學(xué)習(xí)無(wú)用的想法。甚至有些學(xué)生為此不愿去工作而選擇進(jìn)一步考研,希望在研究生階段能夠更加系統(tǒng)地學(xué)習(xí)相關(guān)理論和實(shí)踐技能,然后再就業(yè)從事相關(guān)工作。為了讓學(xué)生體會(huì)到程序設(shè)計(jì)的開(kāi)發(fā)者思維與系統(tǒng)學(xué)習(xí)思維的不同,盡可能讓他們打消對(duì)計(jì)算機(jī)軟件開(kāi)發(fā)的畏懼感,并體會(huì)軟件開(kāi)發(fā)工作的成就感和樂(lè)趣[2]。本文通過(guò)對(duì)項(xiàng)目式教學(xué)的研究,結(jié)合多所高校開(kāi)設(shè)的公共計(jì)算機(jī)應(yīng)用課程——Visual⁃Basic6.0程序設(shè)計(jì),針對(duì)剛剛?cè)胄5母咝W(xué)生進(jìn)行了一次項(xiàng)目教學(xué)的嘗試[3]。項(xiàng)目以對(duì)Office的VisualBasicforApplications(本文簡(jiǎn)稱“VBA”)開(kāi)發(fā)為技術(shù)基礎(chǔ),時(shí)間大約2學(xué)時(shí),功能目標(biāo)是要在Ex⁃cel工作簿基礎(chǔ)上實(shí)現(xiàn)一個(gè)數(shù)據(jù)篩選處理功能,根據(jù)已有的數(shù)據(jù)篩選形成一個(gè)數(shù)據(jù)集。
1項(xiàng)目的用戶需求分析
該項(xiàng)目教學(xué)的訓(xùn)練內(nèi)容設(shè)定是為某部門(mén)信息管理員提供一個(gè)基于Excel的信息篩選導(dǎo)出的應(yīng)用系統(tǒng),可以幫助我們解決需要頻繁重復(fù)填寫(xiě)、提交各種格式個(gè)人信息的問(wèn)題。教學(xué)訓(xùn)練過(guò)程中采用思維導(dǎo)圖逐層展開(kāi)的方式作為輔助,再結(jié)合實(shí)際環(huán)境下的演示操作,可以讓訓(xùn)練內(nèi)容更加有條理、便于學(xué)生理解。為了讓學(xué)生課后也能回顧和跟練,本教學(xué)團(tuán)隊(duì)還對(duì)整個(gè)教學(xué)過(guò)程進(jìn)行屏幕錄像,把視頻文件分享給了學(xué)生。教學(xué)訓(xùn)練的開(kāi)始是先提出平時(shí)工作、學(xué)習(xí)中常見(jiàn)的重復(fù)填表問(wèn)題,請(qǐng)學(xué)生參與討論,分別列舉出可行的解決辦法。然后根據(jù)學(xué)生們的方案逐個(gè)分析其優(yōu)缺點(diǎn)、技術(shù)路線和所需要的技術(shù)儲(chǔ)備,最后提出較小代價(jià)開(kāi)發(fā)和便于用戶使用的理念并引出VBA編程的方案。本項(xiàng)目所設(shè)定的問(wèn)題場(chǎng)景下,面對(duì)的用戶就是基層信息管理員。用戶擁有自己部門(mén)各成員的基本信息,這些數(shù)據(jù)集中、規(guī)范地保存在一個(gè)Excel文件里。因此,訓(xùn)練的開(kāi)始就要新建一個(gè)Excel文件,按照預(yù)設(shè)場(chǎng)景中的格式添加虛擬的數(shù)據(jù)信息以便進(jìn)一步處理。
2規(guī)劃解決方案
從原始數(shù)據(jù)生成最終的結(jié)果,需要對(duì)數(shù)據(jù)進(jìn)行重新組織,那就必須建立一個(gè)原始數(shù)據(jù)和結(jié)果數(shù)據(jù)的對(duì)照聯(lián)系,用于表示兩種數(shù)據(jù)形式的關(guān)系。比較簡(jiǎn)單的一種處理方式,就是直接在當(dāng)前Excel工作簿里新建2個(gè)工作表,其中一個(gè)用于保存最終的結(jié)果,另一個(gè)用于存放臨時(shí)的對(duì)照表,用于設(shè)定要導(dǎo)出的數(shù)據(jù)項(xiàng)。根據(jù)其特點(diǎn),這兩個(gè)工作表可以分別命名為“結(jié)果表”“處理表”。作為原始數(shù)據(jù)表和結(jié)果表的橋梁,處理表里面應(yīng)該同時(shí)能夠體現(xiàn)原始數(shù)據(jù)表和結(jié)果表的字段信息,并讓用戶能靈活地選擇、配置。同時(shí),原始數(shù)據(jù)表的字段數(shù)量應(yīng)該是多于結(jié)果表的,那么,處理表里也無(wú)須直接列出結(jié)果表的字段名。因此,處理表的結(jié)構(gòu)可以設(shè)置為圖3所示的結(jié)構(gòu)。其中,第1行、第2行來(lái)自原始數(shù)據(jù)表,第1行主要用于標(biāo)記列的編號(hào),引用數(shù)據(jù)列的時(shí)候更加直觀。第3行用于表示是否選中原始數(shù)據(jù)表的當(dāng)前字段。如果用戶最終所需要的結(jié)果字段名和原始數(shù)據(jù)表的字段名不完全一致,只要內(nèi)容一致,可以在結(jié)果表里面進(jìn)一步人工調(diào)整修改。這樣的設(shè)計(jì)可以減輕編程任務(wù)、簡(jiǎn)化處理表的結(jié)構(gòu),完成最終目標(biāo)的效率反而會(huì)增加,代碼的適應(yīng)性也會(huì)更好。需要注意的是,現(xiàn)在常用的Excel版本下,普通文檔默認(rèn)保存的擴(kuò)展名為xlsx,但是針對(duì)編寫(xiě)了VBA宏代碼的文檔應(yīng)保存為xlsm格式。這是Office出于對(duì)文檔信息安全的設(shè)計(jì),可以在一定程度上防止未知代碼的惡意操作。
2.1本項(xiàng)目的目標(biāo)
本項(xiàng)目的目標(biāo)大體上可以分為技術(shù)學(xué)習(xí)和功能實(shí)現(xiàn)兩個(gè)方面。作為針對(duì)零基礎(chǔ)學(xué)生的教學(xué),技術(shù)學(xué)習(xí)應(yīng)該針對(duì)項(xiàng)目功能所需要的技術(shù)點(diǎn)展開(kāi),在介紹完一個(gè)技術(shù)知識(shí),應(yīng)該盡可能快地把它應(yīng)用于項(xiàng)目功能的實(shí)現(xiàn)。由于技術(shù)知識(shí)的學(xué)習(xí)主要圍繞項(xiàng)目功能實(shí)現(xiàn)所需要的范圍進(jìn)行,整個(gè)學(xué)習(xí)過(guò)程就有非常強(qiáng)的以目標(biāo)驅(qū)動(dòng)進(jìn)行探索式學(xué)習(xí)的特點(diǎn)。
2.2從大目標(biāo)出發(fā)規(guī)劃小目標(biāo)
基于軟件開(kāi)發(fā)的自頂向下、逐步求精原則[4],要把做的工作按功能和相互關(guān)系劃分為一個(gè)個(gè)具體的小目標(biāo)。小目標(biāo)的劃定不僅有利于分步驟實(shí)現(xiàn)對(duì)應(yīng)的具體功能,還可以幫助學(xué)生在項(xiàng)目管理的視角下分析項(xiàng)目、開(kāi)闊思路。為了減少開(kāi)發(fā)難度,可以先手工把原始數(shù)據(jù)表里的前兩行復(fù)制到處理表對(duì)應(yīng)的位置,做好一定的數(shù)據(jù)的準(zhǔn)備。那么第一個(gè)目標(biāo)就是根據(jù)處理表里第3行的值判斷用戶選中了哪些數(shù)據(jù)列(字段)。目標(biāo)二:假設(shè)上述功能已經(jīng)實(shí)現(xiàn),就要根據(jù)所選中的字段,從原始數(shù)據(jù)表里復(fù)制數(shù)據(jù)。如果把數(shù)據(jù)直接放在結(jié)果表里,還涉及存放順序、空白列的問(wèn)題,就會(huì)有些復(fù)雜。可以先把這些數(shù)據(jù)放在處理表第4行及以下的部分,可以避免問(wèn)題的復(fù)雜度,還便于對(duì)照參考是否復(fù)制了正確的數(shù)據(jù)。目標(biāo)三:在數(shù)據(jù)已經(jīng)正確存放到處理表對(duì)應(yīng)字段下方的情況下,可以接著把數(shù)據(jù)再?gòu)奶幚肀韽?fù)制到結(jié)果表。最后就可以在已經(jīng)完成的工作基礎(chǔ)上,改進(jìn)、增添功能,讓用戶使用起來(lái)更加方便。
3項(xiàng)目的實(shí)施
這部分的策略主要是圍繞目標(biāo)問(wèn)題進(jìn)行分析,通過(guò)網(wǎng)絡(luò)搜索對(duì)應(yīng)的關(guān)鍵詞逐步學(xué)習(xí)、逐層深入。在演示和功能實(shí)施的過(guò)程中,出于訓(xùn)練的需要,盡可能特意“產(chǎn)生”一些常見(jiàn)錯(cuò)誤。通過(guò)這些小錯(cuò)誤的發(fā)現(xiàn)、定位、分析、解決,呈現(xiàn)開(kāi)發(fā)者“調(diào)試”代碼的過(guò)程,可以讓學(xué)生理解并掌握一定的程序調(diào)試能力。此外還要盡可能對(duì)代碼編寫(xiě)注釋,這個(gè)習(xí)慣在言傳身教下對(duì)學(xué)生的影響也是非常直接的。
3.1目標(biāo)一的實(shí)現(xiàn)——判斷用戶選中了哪些數(shù)據(jù)列
考慮到零基礎(chǔ)的情況,這部分的功能實(shí)現(xiàn)還有必要再分為更細(xì)的步驟:先讀取處理表第3行第1列單元格的數(shù)據(jù)并輸出,然后判斷它是否被選中,再逐個(gè)讀取第3行所有的單元格數(shù)據(jù)并判斷其選中狀態(tài)。通過(guò)搜索“ExcelVBA編程”“ExcelVBA讀寫(xiě)單元格”、類似的關(guān)鍵詞,根據(jù)結(jié)果頁(yè)里的提示進(jìn)行操作,很快就可以了解到對(duì)Excel展開(kāi)VBA編程的方法、對(duì)某個(gè)工作表單元格數(shù)據(jù)的讀取和寫(xiě)入的方法。讀取到數(shù)據(jù)后,為了便于查看,還要知道如何查看得到的數(shù)據(jù),繼續(xù)搜索“ExcelVBA輸出數(shù)據(jù)”即可了解到常用的Msgbox對(duì)話框輸出功能。獲取單元格數(shù)據(jù)有多個(gè)方法,這里可以根據(jù)搜索結(jié)果集的情況,演示即可。方法一:MsgboxRange("A2").value'通過(guò)對(duì)話框輸出讀取到的單元格“A2”的內(nèi)容方法二:MsgboxWorksheets(1).Cells(2,3)'讀取到從左到右,序號(hào)為1的工作表,第2行、第3列的單元格VBA編程的基本語(yǔ)法遵從VisualBasic程序設(shè)計(jì)語(yǔ)言(以下簡(jiǎn)稱VB語(yǔ)言)的規(guī)則,通過(guò)解釋代碼含義根據(jù)項(xiàng)目功能所需對(duì)VB語(yǔ)言進(jìn)行簡(jiǎn)單梳理并列舉相對(duì)簡(jiǎn)單的例子演示其基本功能和特點(diǎn)。可以簡(jiǎn)單介紹:變量、數(shù)據(jù)類型、賦值語(yǔ)句、注釋、數(shù)據(jù)輸出、if語(yǔ)句、for語(yǔ)句、函數(shù)及其基本應(yīng)用。從程序設(shè)計(jì)循環(huán)結(jié)構(gòu)的特點(diǎn)結(jié)合讀寫(xiě)單元格數(shù)據(jù)的兩種方法,可以讓學(xué)生體會(huì)到上述方法二比較適合接下來(lái)的編程應(yīng)用。3.1.1讀取“處理表”的選中標(biāo)記數(shù)據(jù)可以先實(shí)現(xiàn)讀取一個(gè)單元格的數(shù)據(jù),同時(shí)輸出進(jìn)行觀察,確保讀取的數(shù)據(jù)和預(yù)期一致。Subtest()MsgboxWorksheets(2).Cells(3,1)EndSub再連續(xù)讀取多個(gè)單元格,為了讓初學(xué)者更容易看明白,可以只考慮前5列的數(shù)據(jù)。這樣簡(jiǎn)化問(wèn)題的策略也是開(kāi)發(fā)者常采用的方法,可以避免復(fù)雜問(wèn)題帶來(lái)的錯(cuò)誤和思維混亂。Fori=1To5MsgboxWorksheets(2).Cells(3,i)Nexti說(shuō)明:根據(jù)VBA編程的特點(diǎn),這部分代碼應(yīng)該放在“Subtest()”和“EndSub”之間,本文后續(xù)描述將不再特別說(shuō)明。3.1.2判斷讀到的數(shù)據(jù)是否符合“選中”的條件根據(jù)實(shí)際情況,可以先設(shè)定假如讀到的數(shù)值是1,就認(rèn)為用戶選定了這一列。先手工把第3行的第1列單元格的內(nèi)容設(shè)置為1,然后編寫(xiě)代碼:MsgboxWorkSheets(3).Cells(3,1)=1觀察運(yùn)行結(jié)果,如果顯示結(jié)果為“true”即可判定這部分功能邏輯上成立,可以進(jìn)一步完善代碼功能。再引入if語(yǔ)句講解和演示條件判斷的應(yīng)用邏輯關(guān)系:Fori=1To5'先考慮前5列數(shù)據(jù)的判斷IfWorksheets(2).Cells(3,i)=1ThenMsgbox"第"&3&"行"i&"列被選中"EndifNexti
3.2目標(biāo)二的實(shí)現(xiàn)——從原始數(shù)據(jù)表里復(fù)制數(shù)據(jù)
這部分的目標(biāo)是把用戶選中的數(shù)據(jù)列(字段)復(fù)制到第4行開(kāi)始的區(qū)域,可以先把原始數(shù)據(jù)表對(duì)應(yīng)的字段名稱也復(fù)制一遍,這樣便于對(duì)照排錯(cuò)。3.2.1復(fù)制部分?jǐn)?shù)據(jù)先假定對(duì)第3行、第2列的值進(jìn)行判斷,假如用戶選中了此列,就應(yīng)該把原始數(shù)據(jù)表里第2行、第2列的字段名(列名)復(fù)制到處理表的第4行、第2列。IfWorksheets(2).Cells(3,2)=1ThenWorksheets(2).Cells(4,2)=Worksheets(1).Cells(2,2)'把字段名稱放到數(shù)據(jù)區(qū)開(kāi)頭的一行Endif那么對(duì)于前5列的數(shù)據(jù)連續(xù)判斷和復(fù)制多個(gè)字段名就應(yīng)該寫(xiě)成:'這里要實(shí)現(xiàn)的是把第3行前5列的內(nèi)容進(jìn)行判斷,根據(jù)是否為1決定是否復(fù)制數(shù)據(jù)表對(duì)應(yīng)列的字段名。Fori=1To5'i代表列號(hào),簡(jiǎn)單的名稱方便描述和理解IfWorksheets(2).Cells(3,i)=1ThenWorksheets(2).Cells(4,2)=Worksheets(1).Cells(2,2)'把字段名稱放到處理表EndifNexti接下來(lái)就可以把對(duì)應(yīng)字段的數(shù)據(jù)也復(fù)制到“處理表”。同樣,為了簡(jiǎn)化問(wèn)題,可以假定只復(fù)制5行數(shù)據(jù)。'僅復(fù)制前5行(包括字段名)、5列Forj=1To5'j代表行號(hào)Fori=1To5'i代表列號(hào)IfWorksheets(2).Cells(3,i)=1ThenWorksheets(2).Cells(j+3,2)=Worksheets(1).Cells(j+1,i)EndifNextiNextj3.2.2復(fù)制所有的數(shù)據(jù)到處理表為了更加便于自動(dòng)、準(zhǔn)確處理數(shù)據(jù),原始數(shù)據(jù)表里的數(shù)據(jù)區(qū)域行數(shù)、列數(shù)通過(guò)代碼進(jìn)行判斷和處理更好。處理的思路是設(shè)定一個(gè)規(guī)范的“數(shù)據(jù)表”:要求“數(shù)據(jù)表”必須滿足所有行、列的內(nèi)容都應(yīng)該是連續(xù)的(無(wú)空白的行或者空白列分隔)。尤其是對(duì)第一行、第一列,可以規(guī)定其在有效的數(shù)據(jù)區(qū)域內(nèi),不允許設(shè)置為空白值,用于確保數(shù)據(jù)區(qū)域的連續(xù)和代碼判斷數(shù)據(jù)區(qū)域的方便性。那么,即使后期數(shù)據(jù)表的數(shù)據(jù)區(qū)域發(fā)生了變化,在執(zhí)行宏代碼的時(shí)候也可以快速判斷行數(shù)和列數(shù),不需要再次手動(dòng)修改代碼。作為一個(gè)特定用途的項(xiàng)目,這樣的設(shè)定完全可以作為一個(gè)數(shù)據(jù)表必須滿足的規(guī)范。那么我們對(duì)數(shù)據(jù)處理的邏輯就是:從左到右順序掃描第一行各個(gè)單元格的值,一旦發(fā)現(xiàn)某個(gè)單元格內(nèi)容為空,表明數(shù)據(jù)區(qū)域的列已經(jīng)結(jié)束。這時(shí)可以記錄到當(dāng)前列為止的列數(shù),作為后續(xù)評(píng)判數(shù)據(jù)區(qū)的依據(jù)。從上到下順序掃描第一列一旦發(fā)現(xiàn)某個(gè)單元格內(nèi)容為空,表明數(shù)據(jù)行已經(jīng)結(jié)束,可以記錄到當(dāng)前列為止的列數(shù),作為后續(xù)評(píng)判數(shù)據(jù)區(qū)的依據(jù)。到目前為止,由于只學(xué)習(xí)了一個(gè)循環(huán)語(yǔ)句for…next語(yǔ)句,這部分代碼就可以寫(xiě)為:Fori=1To16384'16384這是一個(gè)Excel工作表默認(rèn)的列數(shù)最大值,i代表列數(shù)IfWorksheets(1).Cells(2,i)=""Then'假定數(shù)據(jù)列是連續(xù)的,字段行空白,數(shù)據(jù)列結(jié)束lie=i-1'工作表1“信息表”總共有l(wèi)ie個(gè)列,便于后續(xù)處理ExitForEndIfNexti當(dāng)然,這部分功能更加適合的是do…loop語(yǔ)句,但是作為初學(xué)者,for語(yǔ)句更加友好、便于理解。后續(xù)可以安排學(xué)生自己學(xué)習(xí)do…loop結(jié)構(gòu)的循環(huán)語(yǔ)句并把這里的代碼改進(jìn)、完善。把這部分功能進(jìn)行綜合,將得到以下程序代碼:Sub信息提取到結(jié)果表()'假定處理表里面的數(shù)據(jù)都為空白'獲取原始數(shù)據(jù)表(工作表1)里面的列數(shù)Fori=1To16384IfWorksheets(1).Cells(2,i)=""Then'假定數(shù)據(jù)列連續(xù),第一行某字段為空,數(shù)據(jù)列結(jié)束lie=i-1'工作表1“信息表”總共有l(wèi)ie個(gè)列,便于后續(xù)處理;lie的值其他代碼公用ExitForEndIfNexti'把“信息表”的前兩行的數(shù)據(jù)移到“處理表”序號(hào)用于定位標(biāo)記Fori=1TolieWorksheets(2).Cells(1,i)=Worksheets(1).Cells(1,i)'復(fù)制數(shù)據(jù)表第1行Worksheets(2).Cells(2,i)=Worksheets(1).Cells(2,i)'復(fù)制數(shù)據(jù)表第2行IfWorksheets(2).Cells(3,i)=1ThenForj=2To1048576'Excel工作表默認(rèn)最多可以有1048576行IfWorksheets(1).Cells(j,1)=""Then'假定各行數(shù)據(jù)連續(xù)的,空白序號(hào)列,數(shù)據(jù)結(jié)束hang=j-1'存放數(shù)據(jù)區(qū)域的總行數(shù),后續(xù)代碼可以使用此值ExitFor'不再繼續(xù)掃描更多的行ElseWorksheets(2).Cells(j+2,i)=Worksheets(1).Cells(j,i)'復(fù)制數(shù)據(jù)到處理表EndIfNextjEndIfNextiEndSub程序在第一次執(zhí)行的時(shí)候,因?yàn)檫€沒(méi)有在處理表的第3行選中任何列,代碼不會(huì)復(fù)制數(shù)據(jù)區(qū)域的內(nèi)容,只是把原始數(shù)據(jù)表里面的前兩行復(fù)制到了處理表里。接下來(lái),在用戶選中特定列后,再次執(zhí)行這段代碼,即可復(fù)制相關(guān)的數(shù)據(jù)。
3.3目標(biāo)三的實(shí)現(xiàn)——把數(shù)據(jù)放入結(jié)果表
實(shí)現(xiàn)的方法也有很多,比較簡(jiǎn)單的是在上述代碼里添加復(fù)制數(shù)據(jù)到結(jié)果表的代碼即可。代碼如下:Worksheets(3).Cells(j-1,i)=Worksheets(1).Cells(j,i)'復(fù)制原始數(shù)據(jù)表的數(shù)據(jù)到結(jié)果表所要注意的是,未選中的列是空值,而結(jié)果表里的數(shù)據(jù)應(yīng)該是連續(xù)的列,可以通過(guò)代碼刪除空的列。Fori=lieTo1Step-1'從數(shù)據(jù)區(qū)域最右側(cè)的一列開(kāi)始判斷IfWorksheets(3).Cells(1,i).Value=""Then'第1行為空,表示當(dāng)前列為空Worksheets(3).Columns(i).Delete'刪除列EndIfNexti對(duì)于初學(xué)者而言,這里是一個(gè)難點(diǎn),需要解釋為什么循環(huán)變量從右到左逐列判斷、處理。因?yàn)樯婕皠h除一列的時(shí)候,循環(huán)變量從右向左追溯對(duì)代碼執(zhí)行沒(méi)有影響,而從左往右逐列檢查,空列刪除后循環(huán)變量的變化情況稍微有些復(fù)雜,可以以擴(kuò)展任務(wù)的方式布置給學(xué)生去思考、觀察和實(shí)現(xiàn)。
4功能實(shí)用性擴(kuò)展
經(jīng)過(guò)上述的演示和講解,學(xué)生已經(jīng)可以理解Excel的VBA編程思路和特點(diǎn),結(jié)合網(wǎng)絡(luò)信息檢索完全可以獨(dú)立獲取對(duì)應(yīng)功能的核心代碼并應(yīng)用到項(xiàng)目開(kāi)發(fā)中。完成了項(xiàng)目預(yù)先設(shè)定的基本功能之后,還應(yīng)該從用戶的實(shí)際使用環(huán)境和需求出發(fā)進(jìn)行功能改進(jìn)和升級(jí)。這一階段主要是多考慮用戶的實(shí)際使用環(huán)境,以用戶使用更加便捷、高效為準(zhǔn)。
4.1考慮多個(gè)數(shù)據(jù)表的場(chǎng)景
考慮到用戶的實(shí)際工作環(huán)境中的原始數(shù)據(jù)表可能是以多個(gè)工作表的形式存放,以上代碼和功能可以在這方面適當(dāng)升級(jí)改進(jìn)。解決方案的設(shè)計(jì)原則是便于用戶操作,并且盡可能小幅度調(diào)整先前的方案。為此,可以在處理表的上方新增2行,用于存放當(dāng)前所有的工作表、讓用戶確定選擇哪一個(gè)工作表進(jìn)行篩選導(dǎo)出。其中,第1行通過(guò)VBA代碼自動(dòng)獲取并填入當(dāng)前工作簿的所有工作表名稱,用戶在第2行輸入選中標(biāo)記,通過(guò)代碼判斷當(dāng)前處理過(guò)程選中的是哪一個(gè)工作表。同時(shí),要規(guī)定一次只允許選擇一個(gè)工作表進(jìn)行字段數(shù)的提取。相應(yīng)地,先前處理表中的相關(guān)行功能也要做適當(dāng)調(diào)整,向下推動(dòng)2行。獲取當(dāng)前工作簿里所有工作表的關(guān)鍵代碼如下:foreachgzbinWorksheetsk=k+1cells(1,k)=gzb.name'獲取當(dāng)前工作簿中所有的工作表名稱放入第1行next因?yàn)楣ぷ鞅淼脑龆嘁矌?lái)順序序號(hào)的問(wèn)題,可以把結(jié)果表放在所有工作表的最前面,把處理表作為第2個(gè)工作表,相應(yīng)地需要把上述代碼中涉及工作表序號(hào)的部分修改調(diào)整。
4.2數(shù)據(jù)結(jié)果存入獨(dú)立的文檔
Excel的VBA編程功能強(qiáng)大、靈活,可以實(shí)現(xiàn)打開(kāi)指定的word文檔或Excel工作簿并存入數(shù)據(jù),也可以直接新建word文檔或Excel工作簿并存入指定的數(shù)據(jù)。完全可以根據(jù)需要在指定位置輸出一個(gè)或多個(gè)相關(guān)文檔并存入數(shù)據(jù),甚至可以設(shè)置特定數(shù)據(jù)的格式、樣式。
4.3結(jié)合
Word郵件合并功能既然已經(jīng)可以根據(jù)需要導(dǎo)出所需的數(shù)據(jù),那么,以導(dǎo)出數(shù)據(jù)作為數(shù)據(jù)源,結(jié)合Word的“郵件合并”功能,也可以快速生成多個(gè)Word文檔或者直接打印多份指定格式的文稿[5]。4.4添加快捷按鈕和快捷鍵Excel的標(biāo)簽欄、工具按鈕可以根據(jù)需要定制,自己編寫(xiě)的宏代碼也可以以“按鈕”的方式放在“工具選項(xiàng)卡”或者“快速訪問(wèn)工具欄”,可以實(shí)現(xiàn)“一鍵運(yùn)行”,用起來(lái)更加方便、快捷。
5總結(jié)
從功能方面來(lái)看:本項(xiàng)目代碼工作量不大、靈活性高,開(kāi)發(fā)周期短。項(xiàng)目實(shí)施過(guò)程中充分考慮了用戶的實(shí)際需求和使用便捷性,能夠解決信息聯(lián)絡(luò)員頻繁進(jìn)行數(shù)據(jù)收發(fā)的一般需求。對(duì)于更特殊的需求,也可以根據(jù)具體情況對(duì)相關(guān)功能進(jìn)行調(diào)整。從教學(xué)模式上看:這樣一個(gè)零基礎(chǔ)就可以聽(tīng)得懂、做得到的項(xiàng)目,作為項(xiàng)目教學(xué)的案例,既具有一定難度,又有較好的靈活性和可擴(kuò)充性。項(xiàng)目實(shí)施過(guò)程中通過(guò)對(duì)總目標(biāo)的層層分解、逐步細(xì)化,以零基礎(chǔ)學(xué)生的知識(shí)背景逐漸展開(kāi)知識(shí)點(diǎn)介紹和功能實(shí)施,邏輯清晰、目標(biāo)明確。不僅可以消除學(xué)生對(duì)程序設(shè)計(jì)的畏懼感和神秘感、了解項(xiàng)目開(kāi)發(fā)的全過(guò)程、體驗(yàn)開(kāi)發(fā)者思考方式,也可以獨(dú)立、快速完成一個(gè)實(shí)用性較高的作品。此外,項(xiàng)目的改進(jìn)方案多樣,難度適中,比較有利于學(xué)生發(fā)揮想象力、進(jìn)行拓展訓(xùn)練。綜上,本項(xiàng)目對(duì)信息學(xué)科相關(guān)老師、對(duì)應(yīng)用編程感興趣的學(xué)生而言都是一個(gè)不錯(cuò)的案例。
參考文獻(xiàn):
[1]沈光,洪一明.新工科背景下高校實(shí)驗(yàn)室促進(jìn)創(chuàng)新人才培養(yǎng)的治理策略[J].實(shí)驗(yàn)室研究與探索,2020,39(8):263-266.
[2]王迷迷,鄭英,張立珍.“互聯(lián)網(wǎng)+”背景下創(chuàng)客項(xiàng)目式教學(xué)研究[J].信息系統(tǒng)工程,2020(7):155-156.
[3]王艷芬.基于項(xiàng)目式教學(xué)的安卓開(kāi)發(fā)公選課改革探索[J].教育教學(xué)論壇,2020(33):171-173.
[4]倪飛舟.VisualBasic程序設(shè)計(jì)教程[M].北京:中國(guó)水利水電出版社,2010:276.
[5]何振娟,王瑋,劉海,等.Excel中VBA及Word郵件合并功能在批量處理報(bào)表中的應(yīng)用[J].電腦知識(shí)與技術(shù),2021,17(6):212-214.
作者:陳浩強(qiáng) 吳紅燕 楊飛 謝俊松 張海航 梁振 單位:安徽醫(yī)科大學(xué) 合肥市第十一中學(xué)
熱門(mén)標(biāo)簽
信息報(bào)送 信息安全論文 信息技術(shù)論文 信息技術(shù)教育論文 信息管理論文 信息技術(shù)教學(xué)論文 信息化管理論文 信息素養(yǎng)論文 信息化建設(shè)論文 信息論文 心理培訓(xùn) 人文科學(xué)概論