2021-09-24 windows之 excel-VBA基礎知識


excel工作表與VBA代碼:
VBA代碼的編寫環境叫做VBE
英語:visual basic environment
從excel工作表切換到VBE中,快捷鍵是:alt+F11
含有宏程序的excel文件不能用后綴名為xlsx保存,必須用xlsm的后綴名保存。
帶有宏程序的文件,初次打開會提示用戶是否啟用(編輯)功能。
用戶也可以在<開發工具>中的<宏>功能,去重新啟用宏功能。
錄制宏:打開<開發工具>選項卡<錄制宏>功能,在彈出的對話框中輸入宏的名稱,說明,執行時的快捷鍵,宏程序的保存位置。在編輯工作表結束后,再次點擊<停止錄制>。把錄制宏應用到其他工作表中,只需要按下剛才設置的快捷鍵。
使用相對引用來錄制宏:打開<開發工具>,點擊<使用相對引用>,然后點擊<錄制宏>。相對引用可以讓我們從同一個工作表中多次執行相同步驟的操作。將自定義的操作應用到不同的行或列,比如可以很方便的隔行去應用自己設置的樣式。
英文狀態下的單引號表示注釋的符號,綠色文字部分表示注釋。
要學會查看VBA代碼,如圖:

 

 接下來,學習通過表單控件運行宏。
在<開發工具>中的<插入>中的<表單控件>,選擇一個按鈕。在彈出的對話框中選擇要執行的宏。
移動按鈕:右鍵一下,然后按住左鍵拖動。
注意:宏操作是不能撤回的,不可以按ctrl+z撤回。
通過快速訪問工具欄運行宏:
首先在excel選項后台中,點擊<快速訪問工具欄>,把宏添加進去,設置好圖標。
保存宏到個人工作簿:
如果01工作簿中沒有宏,02工作簿中有宏,01的工作表想要應用02中的宏,就需要打開02工作簿。
如果把錄制的宏保存到個人宏工作簿中,01中的工作表再想應用宏,就不用打開02了。
個人宏工作簿,excel默認保存的文件名為 personal.xlsb ,個人宏工作簿默認是隱藏的,必要時需要用<視圖>下的<取消隱藏>讓他顯示出來。
個人宏工作簿是專門用來保存宏程序的文件,宏程序保存到個人宏工作簿之后,其他的工作簿文件是默認可以調用的。
VBA代碼編輯:
插入模塊,就是插入相應的宏代碼。如圖:

 右鍵,可以移除VBA代碼模塊,可以導出到其他位置,可以導入。
編寫一個簡單的VBA代碼:

 第二個:

 VBA程序的變量類型:

 

 

 VBA程序的執行方式:

 一個模塊中允許有多個sub子程序。
光標定位到第一個sub子程序中,然后點擊運行,就會執行第一個。
光標定位到第二個sub子程序中,點擊運行按鈕就會執行第二個。
也可以打開<視圖>中的<立即窗口>,在立即窗口中用命令<call 子程序名>運行。
VBA程序中多個變量的定義:

 variant可變數據類型:

 強制變量聲明:

 變量的生命周期:也就是不同的變量定義方式,他的作用范圍不同。如圖:

 如果編寫的VBA代碼中有循環執行的結構,如果需要重置,讓程序重新從0開始,要點擊VBE界面左上角的<重新設置>。
static變量:
由關鍵字static定義的變量,在子程序中執行完一次后並不會失效,他會循環執行下去。

 常量的定義:
使用關鍵字:const  定義,常量的生命周期與變量相同,如果只在子程序sub內定義,則他的作用范圍就是子程序內部。如果想讓同一個模塊內的所有子程序都可以使用定義的常量,就需要把定義寫在子程序外部。如果想讓同一工作簿下的所有模塊都可以使用定義的常量,則需要加上關鍵字:public

 

 ActiveCell :活動單元格
Interior.color:內部顏色常量
vbRed:紅色
?vbRed:通過立即窗口查詢Red代碼數字。
數學運算符:

 

 比較運算符:

 

 邏輯運算符:and or  not

 

 

 VBA命名規范:

 

 

 

 if選擇結構:

select選擇結構:

 

 for next循環結構:

 

 step關鍵字的使用:

 如何中斷for循環:

 嵌套for循環:

 do while循環結構:

 do until循環結構:

 無參數的子程序:

 有參數的子程序:

 通過參數調用,實現不改變原代碼的情況下,進行求值。
用戶自定義函數:
可以直接在單元格中進行調用,也可以在<函數>中找到函數分類中的<自定義函數>

 

 一維數組:
第一種定義方式:

 第二種定義方式:
如果沒有聲明option base = 1 ,則表示數組下標從0開始。

 二維數組:

 動態數組:

 VBA面向對象:

 

 

 對象的層級架構:

 根據對象的層級架構給單元格賦值:

 單元格的引用:

 單元格引用之cells屬性:
cells(2,3)表示第2行,第3列數據。

 offset屬性:
offset(2,3)表示距離某個單元格的偏移量。

 select方法/activate方法:

 range的end屬性:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM