1
、在自定義函式前加上
private
關鍵字進行宣告,該函式將不會出現在
excel的"
貼上函式
"對話方塊中,但仍然可以在公式中運用它們。如果是專門為其他的
vba過程開發的自定義函式,則應該使用
private
關鍵字進行宣告。2、
通常,使用者自定義函式後,在
"貼上函式
"對話方塊中將會出現在
"使用者定義
"類別中。如果希望自定義函式出現在其它的類別中,必須編寫和執行
vba**為自定
義函式指定類別。如執行
語句後,將自定義的
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、通常,將
物件的enableevents
屬性設定為
false
即可禁止事件發生。但要注意的是,這個屬性只對真正的
excel物件(
如workbooks,worksheets,charts等)
的事件產生作用。
VBA注意事項
以下是專案過程中遇到的坑,可能有些說明的部分不一定嚴謹,僅供參考 1 最好儲存成 xlsm 檔案 2 注意 vba 的引數型別,使用的引數如果未宣告直接使用的話會出現型別不匹配的錯誤 3 寫完後,可以通過 除錯 編譯 vba project 按鈕來檢查 中是否存在一些比較低階的錯誤 4 只有過程 s...
程式設計注意事項
1.動態輸出表頭或資料 每次輸出之前,請先清空表頭以及資料再新增。2.一般資料都要分頁,請直接加上分頁 3.重複性資料的校驗 介面接收資料 1.介面接收資料,一般型別接受 例如 string 列印日誌,之後再轉換成自己想要的格式json等。需求評審 問題一 大面問題 1.是什麼?2.怎樣玩?業務流程...
wxWidgets程式設計注意事項
1.在類中定義物件 wxauimanager m mgr 編譯無法通過,輸出類似錯誤 demo demo.o in function myframe myframe demo.cpp text 0x6491 undefined reference to wxauimanager uninit dem...