VBA編程規則及方法技巧



1、在自定義函數前加上Private關鍵字進行聲明,該函數將不會出現在Excel的“粘貼函數”對話框中,但仍然可以在公式中運用它們。如果是專門爲其他的VBA過程開發的自定義函數,則應該使用Private關鍵字進行聲明。
2、 通常,用戶自定義函數後,在“粘貼函數”對話框中將會出現在“用戶定義”類別中。如果希望自定義函數出現在其它的類別中,必須編寫和執行VBA代碼爲自定 義函數指定類別。如運行Application.MacroOptions Macro:=”SumPro”,Category:=4語句後,將自定義的SumPro函數指定給“統計函數”類別。
3、與Sub過程不同,自 定義函數Function過程並不出現在宏對話框中;當執行VBE編輯器中的“運行——運行子過程/用戶窗體”命令時,如果光標位於某Function過 程中,就不能獲取宏對話框並從中選擇要運行的宏。因此,在開發過程的時候,必須採取其它方式對自定義函數進行測試,可以設置調用該函數的過程;如果該函數 是用在工作表公式中的,可以在工作表中輸入簡單的公式進行測試。
4、如果在公式中使用了自定義函數,但返回值“VALUE!”,表明函數中有錯誤。錯誤的原因可能是代碼中的邏輯錯誤、可能給函數傳遞了不正確的參數、可能執行了禁用的動作如試圖更改單元格的格式。
5、在自定義函數中使用參數時,可選參數必須在任何必需的參數之後。在參數名稱前加上關鍵字Optional即可指定一個可選的參數。
如果必須確定某可選的參數是否傳遞給了某函數,應將該參數聲明爲Variant類型,然後在過程代碼中使用IsMissing函數來進行判斷。
要創建包含不定數量參數的自定義函數,使用一個數組作爲最後一個(或惟一的)參數,並在數組前面加上關鍵字ParamArray。關鍵字ParamArray只能用於參數列表中的最後一個參數,其數據類型總是Variant並且是一個可選的參數。
6、在自定義函數的程序代碼中,應確保至少有一次把合適的值賦給了函數的名稱。
7、函數的名稱必須遵循一定的規則(與變量名稱相同)。最好不要採取與單元格地址相同的形式,並且還要避免使用與Excel內置函數名稱相同的名稱,否則,Excel會使用內置函數。
8、如果想將Case關鍵字和相應的語句放在同一行上,在Case語名與相應語句間加上分隔符冒號(:)。
9、通常情況下,VBA中對文本進行比較等操作是區分大小寫的,若將語句Option Compare Text添加到模塊的頂部,則程序執行時不會區分大小寫。
10、要處理單元格區域,在代碼中不必先選項中該單元格區域。



1、編寫自定義函數時,必須在VBA模塊中,而不是在與ThisWorkbook、工作表和用戶窗體關聯的代碼模塊中。
2、如果代碼要選中單元格區域,則該區域所在的工作表必須是活動的,可以使用Activate方法來激活某工作表。
3、儘量在VBA代碼中使用命名的單元格區域。
4、當通過快捷鍵選擇單元格區域的時候,如果用宏錄製器生成代碼,則要認真檢查代碼中是否有對選中的實際單元格錄製硬編碼的引用。
5、如果某個宏應用於當前單元格區域中的每個單元格,但用戶可能會選中整行或整列,通常,我們不需要遍歷選區中的每個單元格,那麼這個宏應創建一個子選區,使其只由非空單元格組成。
6、Excel允許同時有多個選區。
7、若定義了單元格區域的名稱,則在代碼中使用定義的名稱時,即使在名稱單元格區域中添加或刪除了行或列,也能確保正確使用該單元格區域。
8、在VBA代碼中使用註釋,可以簡要描述編寫的每個過程的目的、對過程所做的任何修改、描述變量的目的等。
通過使用VBE中“編輯”工具欄的“設置註釋塊/解除註釋塊”,也可以將VBA語句暫時設置成註釋塊,以便於調試。
9、在工作表中編輯控件。在拖動控件的同時按Alt鍵,按鈕將與工作表的網格線對齊;在拖動的同時按Shift鍵,按鈕成正方形
10、通常,將Application對象的EnableEvents屬性設置爲False即可禁止事件發生。但要注意的是,這個屬性只對真正的Excel對象(如Workbooks,Worksheets,Charts等)的事件產生作用。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章