資源描述:
《vba宏編程速成寶典》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、修訂記錄版本日期作者說明V1.02011-3-17jingpengtaoVBA基礎(chǔ)教程,不用自己寫代碼,不用看懂代碼也可以寫出適合自己工作的宏。目錄1.1第一部分:關(guān)鍵代碼解釋41.2第二部分:如何錄制宏101.3第三部分:實(shí)例解釋如果編寫宏111.4第四部分:如何確定在哪個(gè)位置插入關(guān)鍵代碼呢?211.5第五部分:如何調(diào)試宏211.6第六部分:分塊合成VBA代碼231.7第七部分:個(gè)人心得2625/25序:EXCEL在我們平時(shí)的生活工作中有著廣泛和重要的應(yīng)用,尤其是對于每天和大量數(shù)據(jù)打交道的人員更重要,但同時(shí)對大量數(shù)據(jù)的操作又顯
2、得是那么的繁瑣,一不小心就很容易出錯(cuò),對于每天都需要用EXCEL做同樣事情的人來說,要是能夠有一種工具來自動做工作就好了。EXCEL宏就是一個(gè)解決此類問題的辦法,編寫好一個(gè)實(shí)用的EXCEL宏可以大幅度提高工作效率和質(zhì)量,因此掌握宏編程顯得尤為重要。但是并不是每個(gè)人都學(xué)過編程,都了解VBA語言,那么怎樣才能快速學(xué)習(xí)和掌握應(yīng)用宏呢?下面我就根據(jù)我個(gè)人的學(xué)習(xí)經(jīng)驗(yàn)及理解來教大家如何學(xué)習(xí)VBA編程。不需要理解代碼的含義,不需要知道哪一步操作是什么代碼,只要你會復(fù)制粘貼,就能夠?qū)懗鯡XCEL宏,提高你的工作效率。俗話說:“授之以魚,不如授之
3、以漁”,所以替人寫宏不如教給他方法,也方便各自修改。學(xué)完本教程,寫一些簡單的宏肯定可以。編寫本教程的目的就是為了方便經(jīng)常和數(shù)據(jù)打交道的同事朋友,能夠各自根據(jù)需要編寫自己的宏。備注:由于本教程V1、0版本只是針對從未接觸過VBA語言及剛?cè)腴T的人員編寫的,并未涉及更詳細(xì)的代碼分析及條件語句,循環(huán)語句,數(shù)據(jù)語句等,將會在后期的版本更新中不斷完善。由于編者水平經(jīng)驗(yàn)有限,難免會有一些不足之處,還望多多包涵。25/251.1第一部分:關(guān)鍵代碼解釋1、DimstrAsStringstr=ThisWorkbook.Path&"***.xls"
4、Workbooks.Openstr代碼解釋:自動打開文件名為“***”,屬性為xls的文件。同時(shí)xlsx,csv文件也可打開。實(shí)際應(yīng)用:如果你的宏執(zhí)行需要很多文件,那么就可以再一開始就先執(zhí)行打開每個(gè)文件,如:DimstrAsStringstr=ThisWorkbook.Path&"日常數(shù)據(jù)模板.xls"Workbooks.Openstrstr=ThisWorkbook.Path&"臨時(shí)表.xls"Workbooks.Openstrstr=ThisWorkbook.Path&"擾碼分布表.xls"Workbooks.Open
5、str2、Windows("***.xls").ActivateWorkbooks("***.xls").CloseSaveChanges:=False代碼解釋:關(guān)閉文件名為“***”,屬性為xls的文件等。其中SaveChanges:=False意為不保存直接關(guān)閉該文件,如果SaveChanges:=True,則表示保存之后再關(guān)閉該文件。實(shí)際應(yīng)用:在執(zhí)行完所有的代碼之后關(guān)閉各個(gè)已打開的文件,對于需要保存數(shù)據(jù)的SaveChanges:=True即可,對于不需要保存數(shù)據(jù)的SaveChanges:=False。如:Windows("
6、日常數(shù)據(jù)模板.xls").ActivateWorkbooks("日常數(shù)據(jù)模板.xls").CloseSaveChanges:=FalseWindows("擾碼分布表.xls").ActivateWorkbooks("擾碼分布表.xls").CloseSaveChanges:=TrueWindows("臨時(shí)表.xls").ActivateWorkbooks("臨時(shí)表.xls").CloseSaveChanges:=False25/253、i=1While(Cells(i,1)<>"")i=i+1WendCells(i,1).Sel
7、ectActiveSheet.Paste代碼解釋:此段語句主要是對單元格進(jìn)行判斷,是否為空白,如果為空白,則執(zhí)行粘貼。具體解釋請看下圖:假如你要把N個(gè)不同EXCEL的內(nèi)容粘貼到一個(gè)新的EXCEL里,也就是匯總所有的數(shù)據(jù)。假如第一個(gè)EXCEL內(nèi)容有13行,第二個(gè)EXCEL內(nèi)容有18行,第三個(gè)EXCEL內(nèi)容有20行,等等。也許你會說直接定位到單元格不行嗎?當(dāng)然,對于每天固定行數(shù)的EXCEL,是可以的,但是如果每天的數(shù)據(jù)都在變,今天第一個(gè)EXCEL有17行,第二天又變?yōu)?0行,第二個(gè)EXCEL今天有20行,第二天變?yōu)?5行,這樣你就沒
8、法使用固定的單元格定位粘貼數(shù)據(jù)了。因此就需要上面的代碼。語句類型為While……Wend……While(Cells(i,1)<>"")Cells(i,1)當(dāng)i=1,表示A1單元格,也就是當(dāng)A1單元格不為空白的時(shí)候,執(zhí)行i=i+1,也就是接著判斷A2是不是空白,依