1. 程式人生 > 實用技巧 >Excel技能樹系列09:巨集與VBA

Excel技能樹系列09:巨集與VBA

1970年,出現了一種專門為普通人而設計的簡單易學的新語言Visual Basic,簡稱VB。甚至只需要瞭解150個左右的英語單詞,就能輕易的學會使用它。後來微軟吸收了VB的特性,改進了這門語言,用在Office系列軟體中,稱之為Visual Basic for Applications,簡稱VBA。VBA專門用來自動化重複性工作和批量計算等。VBA簡單易學,只要安裝了Office比如Excel,Word等軟體,就可以開啟VBE編輯器編寫VBA程式碼。1993年,微軟釋出了Excel 5.0,並且首次在Excel 5.0中加入了VBA,以處理繁瑣而重複的工作。後面隨著Excel新版本的釋出,VBA也在每一次更新中逐步改進。

其實VBA最初設計出來就是為普通人解決重複性任務和工作的,非常簡單易學。通過簡單的學習瞭解,加上Excel本身的錄製巨集程式碼功能,應用上就完全沒問題了。本來VBA就是為普通人設計的,其實本系列並不是要講VBA,如果想要學習,這方面的教材不少。我僅僅是整理了一些通用的程式碼,不需要懂程式設計和程式碼就可以使用,可以大大方便Excel資料處理工作。結合前面8篇基礎進價到公式高手系列,你會愛上強大的Excel的。

在這篇文章中,鄙人將會列出一些非常實用的VBA程式碼,讓你的Excel表格處理工作大大加快,節省下很多的時間用來幹更有意思的事情。主要還是Excel中的大量重複性工作都可以自動交由VBA來完成。這些都是非常實用的程式碼,拿來稍微改一下就能夠勝任你的工作。整理在你的私人工具庫裡面,用的時候直接呼叫,大大方便自己的工作。

雖然Excel可以通過錄制巨集來生產VBA程式碼,但是通過錄制巨集的方式得到的程式碼摻雜了太多我們並不需要的程式碼,從而影響到執行效率。鄙人會通過例項結合的方式,甚至會教你如何呼叫VBA,讓它幫你完成工作。即使你沒有接觸過任何程式語言,也能通過這篇文章呼叫VBA。在你體會到VBA帶來的方便的同時,我希望你能同時開啟新技能的窗戶,通過簡單學習即可拷貝網上大部分VBA為你所用。想想以後重複性資料整理啥的工作都可以通過VBA解決,提高自身競爭力的同時還能剩下時間。即使不會程式碼也能更快速的處理電子表格,僅僅需要簡單瞭解和修改,其實大部分重複性工作都能勝任了。

好了,廢話不多說,以下介紹的這些程式碼後面會提供一份BAS格式的檔案,下載一個notepad++或者直接用記事本開啟,複製你需要的那一段程式碼到VBE編輯器執行。因為這是Excel VBA匯出格式,你也可以下載下來,匯入進你的Excel就可以使用。還可以把這個檔案儲存到微盤或者網盤啥的,隨時隨地使用,工具本身就是為了簡化工作的。也可以收藏這幾篇文章以備不時之需。


開始之前先簡單介紹在Excel中怎樣使用VBA,要在Excel中使用VBA,需要以下幾個步驟:
第一步:需要開啟你想執行VBA的Excel檔案;
第二步:按下ALT + F11組合鍵,就可以開啟VBE編輯視窗。
第三步:在視窗上找到”插入”->”模組”,在這彈出來的這個編輯器裡面複製貼上你要用的程式碼就行了。

VBE開啟方式

複製完你需要的程式碼之後,通過以下幾個步驟來執行VBA。
第一步:回到Excel主介面,點選選單欄上的“開發工具”選單,或者按Alt+ F8。
第二步:點選“巨集”,在彈出的對話方塊選擇你需要執行的巨集。
第三步:點選執行即可。

執行巨集


萬一你的Excel主介面沒有開發工具這個選項卡呢?很簡單,點選Excel的“檔案”選單,找到“選項”,點選進去,找到“自定義功能區”,點選它。在右邊找到“開發工具”,在“開發工具”前面的小方框打鉤。回到主介面就可以看到開發工具出來啦。現在的已經講解完畢,開始實用VBA程式碼的講解。讓我們一起來學習如何使用這些實用程式碼來幫助自己做重複性工作以及節省時間吧。

注意事項:你會發現裡面有一些單引號後面有文字,這個是註釋解釋這段程式碼用途的,不會影響到程式碼的執行。比如下面這段程式碼第一的單引號後面跟的文字就是解釋這段程式碼的用途的。

1、下面這段程式碼顯示所有隱藏的工作表,因為有時候我們的工作表太多了,所有會隱藏一些工作表。但是顯示的時候只能用滑鼠一個個顯示,不方便。下面這段程式碼顯示所有隱藏的工作表,非常方便。

'單引號後面是註釋,這段程式碼顯示所有隱藏的工作表
SubUnhideAllWoksheets()
DimwsAsWorksheet
ForEachwsInActiveWorkbook.Worksheets
ws.Visible=xlSheetVisible
Nextws
EndSub

2、下面這段程式碼隱藏除活動工作表以外的所有工作表。

'隱藏除活動工作表以外的所有工作表
SubHideAllExceptActiveSheet()
DimwsAsWorksheet
ForEachwsInThisWorkbook.Worksheets
Ifws.Name<>ActiveSheet.NameThenws.Visible=xlSheetHidden
Nextws
EndSub

3、按照字元順序排序工作表。

'這段程式碼按照字元順序排序工作表
SubSortSheetsTabName()
Application.ScreenUpdating=False
DimShCountAsInteger,iAsInteger,jAsInteger
ShCount=Sheets.Count
Fori=1ToShCount-1
Forj=i+1ToShCount
IfSheets(j).Name<Sheets(i).NameThen
Sheets(j).Movebefore:=Sheets(i)
EndIf
Nextj
Nexti
Application.ScreenUpdating=True
EndSub

4、一次性保護工作簿中所有的工作表。

'一次性保護所有的工作表
SubProtectAllSheets()
DimwsAsWorksheet
DimpasswordAsString
password="Test123"'將Test123替換成你自己的密碼
ForEachwsInWorksheets
ws.Protectpassword:=password
Nextws
EndSub

5、一次性取消保護所有的工作表。

'一次性取消保護所有工作表
SubProtectAllSheets()
DimwsAsWorksheet
DimpasswordAsString
password="Test123"'將Test123替換成你設定的密碼即可
ForEachwsInWorksheets
ws.Unprotectpassword:=password
Nextws
EndSub

本篇就講這幾個吧,後面還會有1篇,總共有17段實用的程式碼整理在這些文章中,全部放在一篇太長了,不方便檢視。這幾個只是引子,後面會以目錄的形式排列,檢視目錄是否有自己需要的程式碼,然後進去複製貼上使用即可。