編寫Excel VBA程序的10個技巧

2021-02-17 完美Excel

學習Excel技術,關注微信公眾號:

excelperfect

學會一些有趣的技巧或想法,能夠有效地提高ExcelVBA編程水平。下面是chandoo.org總結的編寫Excel VBA程序的10個技巧,我對其進行了整理,供有興趣的朋友參考。

 

技巧1:編寫代碼前先想想

解決一個非常複雜的問題的最佳方法就是思考。當你要使用VBA自動生成報告或者清理導入的數據時,只需將邏輯記錄在紙上,查看並理解問題的各個方面,將解決方案清楚地呈現在眼前。這對我們都很有用。

 

技巧2:使用錄製宏

Excel內置的宏錄製器是學習了解並處理新對象的好方法。即便是很有經驗的VBA程式設計師也一直使用它來錄製部分代碼,然後在此基礎上修改。記住,宏錄製器不一定會產生最佳或完整的代碼,但可以很好地提供如何為一組操作編寫代碼。

 

技巧3:使用立即窗口

Excel VBE有一個稱為立即窗口的強大功能,你可以在此處編寫幾乎所有的VBA語句並快速獲得結果。例如,打開VBE(在Excel中按ALT + F11鍵),然後進入立即窗口,輸入:?Activecell.Value,按回車鍵,立即顯示當前單元格的值。

 

技巧4:使用Debug.Print

在編寫代碼時,出錯是難以避免的。Bug是你的代碼沒有按照預期執行時的一種奇怪的稱呼。除非進行檢查,否則我們不知道代碼怎麼啦。此時,可以使用Debug.Print,在立即窗口中查看程序運行時變量的值,幫助確定Bug的位置。

 

技巧5:可能存在著一個解決你的問題的內置的方法

VBA有很多方法(Method)來做很多事情。如果你想編寫自己的代碼來反轉某些文本、基於分隔符拆分某些內容、找到2個單元格區域的交集或者在10秒鐘後執行某些操作,那麼可能是在編寫代碼之前就應該做的,因為有一個解決它的方法。每當你覺得自己正在為已經解決了好幾次的問題編寫代碼時,都有可能存在為此內置的一些方法或對象。

 

技巧6:分解工作成幾小塊

無論你面對的工作情況或問題有多複雜,都是由幾個較小的問題組成的。因此,將事情分解成較小的塊,這種編碼技術稱為模塊化。模塊化具有幾個優點:

1.重用:將大型程序分解為較小的部分後,可以在多個地方或其他項目中重用較小的部分。

2.易測試:較小的代碼片段易於測試和調試。

3.可維護性:可以輕鬆地維護較小的部分。一旦獲得更好的版本,就可以升級它們而不會造成太大的損失。

 

技巧7:不斷迭代

每當你嘗試使整個部門的工作自動化時,請退後一步,看看你可以具有的最小(但最有用)的功能是什麼。實施它,然後迭代添加新功能。羅馬不是一天建成的。不要想著一開始就大而全,這樣只會耗費過多的時間,甚至可能會半途而廢。此外,迭代開發還使你可以隨時停止,並且仍然會有一些有效的代碼。

 

技巧8:擁有至少一本好的參考資料

如果經常使用VBA,那麼手上應該至少有一本好的參考資料。一本好的參考書中包含有很多實用的技巧和信息,可以在編寫程序時隨時參考,也可以在平時經常翻閱,總是可以從中學到新的東西。

 

技巧9:接受挑戰

如果想要精通Excel或VBA,就要敢於接受具有挑戰性的工作,例如嘗試使用VBA自動化報表、試著簡化公式或者改進圖表。

 

技巧10:僅在需要時使用VBA

一旦你開始學習VBA,自然就會對其擁有的可能性感到興奮。但是請記住,過度使用它會使你的工作複雜化。建議:儘可能使用Excel內置的功能,Excel具有許多的內置功能可以解決各種日常問題(條件格式、數據透視表、公式、數據驗證、表單控制項等),僅當你覺得沒有一種簡單的方法可以單獨使用Excel解決問題時,才使用VBA。

 

在學習和編寫Excel VBA程序的過程中,你可能還會有很多發現,也會伴隨著很多新奇的體驗,記得及時總結,這也是快速提高編程能力的一個好方法。

 

[預告]在知識星球App:完美Excel社群中,即將推出電子書《100+個有用的ExcelVBA代碼》,相信對於學習和使用ExcelVBA的朋友來說,一定會有很好的幫助。

歡迎在下面留言,完善本文內容,讓更多的人學到更完美的知識。

歡迎到知識星球:完美Excel社群,進行技術交流和提問,獲取更多電子資料。

相關焦點

  • excel VBA是什麼?VBA編程入門教程
    本篇將介紹excel vba是什麼?vba編程入門教程,有興趣的朋友可以了解一下!一、excel vba是什麼?VBA的英文全稱是Visual Basic for Applications,是一門標準的宏語言。VBA語言不能單獨運行,只能被office軟體(如:Word、Excel等)所調用。
  • 「Python替代Excel Vba」系列(終):vba中調用Python
    如下圖:數據大致表示每個部門每個月的銷售情況Units Sold 列是銷售額本文所用到的 pandas 技巧都在之前的章節已有詳細介紹,因此本文只對重點細節做講解而上述命令行只是把這個 xlam 文件放入你的 excel 加載項目錄中而已。然後,在你的任意目錄中打開命令行。執行以下語句,即會生成一個 py 文件和一個 帶宏的 excel 文件。
  • VBA代碼大全030:用vba強制關閉word應用程式
    我們有時候需要從word中提取數據到excel中。 這時候一般的套路都是在excel vba中創建word應用程式實例,然後一番操作以後關閉word應用程式。VBA.CreateObject("Word.Application") Dim oDoc Set oDoc = oWord.Documents.Open(sPath & "\abc.doc") '*********** '接下來是一段word數據的提取操作 '*********** '關閉打開的文檔 oDoc.Close (False) '退出Word應用程式
  • Excel VBA 不可一世的宏中,基本數據構成你知道多少
    ,就是在程序執行完成或者還沒執行,他都是一成不變的值。常量這值在我們的以後編寫中,也需要用到,比如我們需要引用某一天的匯率或者稅率,這個時候我們可以這些寫代碼,如下圖:以上就是我們定義了三個常量,就是把數字賦值給到某一個字符串,這樣做的好處就是,我們在用的時候,可以多次引用這個字符串即可,當我們需要修改的時候,只需要修改一次即可,是不是感覺很方面?
  • vba第十八課
    vba第十八課調用工作表函數在vba中我經常會對工作表的數據進行一些運算,雖然通過代碼進行循環或判斷也可以完成,但是通vba調用函數可以更簡單更直接進行運算提高代碼的運行效率,比如countif、sumif等需要進行判斷統計和求和的運算。
  • 教Excel VBA初學者編寫第一個宏
    學習Excel技術,關注微信公眾號:excelperfect
  • Excel vba工作表事件【實現快速自動隱藏工作表】
    > 前兩天有個朋友諮詢我後來編寫了如下代碼,其中我把字符「X」優化了一下,利用數據有效性,每個工作表名稱後面為隱藏和不隱藏兩個選擇:可以做一個循環,點個按鈕之後讓工作表批量的隱藏或者取消隱藏。將下面代碼放入模塊中。就可以實現批量隱藏或者不隱藏工作表功能。這個跟工作表事件的區別就是,工作表事件可以即刻生效,修改工作表狀態後立馬隱藏或者不隱藏。而這個改變工作表狀態名稱後,無法即刻生效。需要運行一下程序才能實現功能。
  • 工作中為什麼有必要學點VBA
    02VBA的應用可能有人會說了,excel有非常豐富的內置函數庫,能滿足大多數場景的需要,VBA就沒必要學了吧,也對也不對,濤哥有個專輯專門介紹這些常用函數的使用方法,確實,對於簡單的場景或者說對於大多數對excel了解不深的人來說
  • Excel VBA從新手到高手系列課程
    二、   學時分配:全套課程分三部分內容,目前總共46個學時,2070分鐘。其中新手篇時長12小時39分;進階篇時長7小時46分;高手篇14小時04分;請大家注意安排學習計劃及合理分配學習時間。   五、 教學目錄:第一章 新手篇-走進excel vba的世界      1.1 什麼是VBA      1.2 EXCEL中的宏      1.3 認識VISUAL BASIC編輯器        1.4 vba程序結構      1.5 數據類型         1.6
  • vba第十六課
    vba第十六課錯誤分支語句1On error resume next 例:sub onerror()Dim a!100:End Sub假設沒有on error resume next這句語句,程序報錯如果各位在實際工作中遇見excel常規方法無法解決的或操作比較複雜的報表可以私信我,可以免費編寫代碼來解決!
  • Excel VBA 編寫一個實際工作應用的程序,你是如何享受這個過程呢
    舉一個例子,我們現在需要編寫一個程序,想要實現的功能是排序工作表,讓按照我們指定的規則進行排序,方便我們整理數據。現在我們的終極目的有了,那麼我們就應該去一步一步的分析問題,轉化為我們用代碼可以實現的需求。
  • 「Python替代Excel Vba」系列(二):pandas分組統計與操作Excel
    帶你用pandas玩轉各種數據處理前言在本系列的上一章已經介紹了如何讀寫 excel 數據,並快速進行匯總處理。但有些小夥伴看完之後有些疑惑:那只是簡單讀寫數據而已,有時候需要設置 excel 的格式。
  • 在Excel中執行我們的Access,你或許可以使用VBA來完成自動化
    Excel我們都知道基礎的操作,可是你是否知道我們Excel還可以操作其他的程序來完成我們的自動化任務,比如用Excel操作我們的Access,word,ppT,Outlook,或者其他的應用程式,以便達到我們想要的功能。
  • vba第二十一課
    vba第二十一課工作薄運用實例在一些跨工作薄的數據調取數據或多個工作薄中循環調取數據,那麼我們就要熟練掌握工作薄的代碼的書寫,只要運行程序就可以獲得數據,下面看一段代碼例:Dim wk As Workbook
  • Excel VBA 實例(22) - 一鍵篩選其他工作表或工作簿的數據
    2、編寫vba事件,一旦班級名發生變化,則進行篩選。3、編寫篩選vba代碼。具體步驟1、設計下拉菜單。這個比較簡單,選中要設計下拉菜單的單元格,數據 - 數據驗證,彈出的窗口選擇序列,來源把所有班級都加入(注意:班級直接用逗號隔開,要用英文輸入法下的逗號),如下圖:
  • 收藏 | 27個Excel vba實例匯總(附贈VBA教程)
    永恆君陸陸續續一共分享了VBA的實例共27個,另外還有若干個小的技巧實例。>工作表(簿)操作實例(2)- 批量將工作表拆分為單獨文件實例(3)- 多個工作簿批量合併實例(4)- 根據已有名稱,批量新建表格實例(7)- 一鍵批量列印工作簿數據匯總實例(6)- 一鍵匯總多個sheet數據到總表實例(19) –  一鍵匯總不完全相同的sheet到總表數據提取實例(8)- 利用正則表達式進行定向提取實例(10
  • vba第十三課
    vba第十三課for……next這個語句在VBA編程中運用的最廣,就我個人而言我很少用do……loop,而用for……next較多,它與do……loop語句的區別就是for……next語句自帶計數器,而do語句要達到計數的效果只能用累加的方式去做(如a=a+1),什麼是計數器呢
  • EXCEL學習的順序是什麼?
    一、首先要了解excel的各大功能,基礎的有複製,粘貼,數據有效性,條件格式;然後就是函數,函數要學sumif,sumifs,countif,countifs,vlookup,再深點就學offset,match,index等等。
  • 一個小技巧,認識Word中的VBA
    Word是一個很強大的東西,從字符錄入到文檔排版,無所不能,甚至可以在word中嵌入Excel表格等程序功能。但是現在已經有的word功能似乎有點滿足不了我們的特別需求。比如:在word文檔中輸入一個中文日期,而且是今天的日期,如:二○一八年三月九日,輸入這個日期你至少要輸入N多個字符來完成。
  • vba第二十二課
    vba第二十二課工作表的運用實例在workbook對象中,有一個sheets集合,其成員是worksheet對象或chart對象。nameEnd sub注釋:Sheets(1)表示工作薄中的第一個工作表,第二個為