
Excel VBA 從入門到精通
【1.1 VBA與Excel應用程序】
1、看看下面吧:
2、VBA不僅僅能在excel中使用,在其它的office應用軟件里面也是可以使用的,比如word。
【1.2 使用Excel的宏】
1、看看下面吧:
看看用“圖形對象”執行宏的例子吧:
上圖中所說的“清理宏代碼”的意思是刪除那些不需要的宏代碼(因為在錄制宏的時候可能會一同
生成許多并不需要的宏代碼)。
看看對于宏的安全設置吧:
2、在保存有宏代碼的excel文件的時候,文件格式要注意,如果保存成普通的excel格式是
不具有宏的功能的:
3、如下圖的代碼中其實就是紅色矩形中的代碼有用,其它的代碼是沒什么作用的(錄制宏的
時候系統自動添加上去的),所以是可以刪除掉的,這個就是“清理宏代碼”的操作:
【1.3 VBE開發環境】
1、看看下面吧:
2、如下圖中的“ThisWorkbook”指的是工作薄,而Sheet1、Sheet2、Sheet3指的是三個工
作表。而我們錄制的宏的代碼都在模塊里面:
3、在代碼編輯窗口中可以進行分割窗口、可以顯示全代碼或者每個代碼單獨顯示等等操作:
4、在輸入對象屬性和方法代碼的時候有時候代碼提示功能沒有了,此時可以按“ctrl+j”來
重新調出提示來:
在輸入命令的時候,想要在只輸入了前幾個字母的情況下想要讓系統自動補全后面的字母的話,可
以用編輯工具欄中的特定按鈕來完成操作:
【1.4 第一個VBA程序】
1、看看下面吧:
2、看看上面例子的具體做法吧:
首先創建窗體并添加按鈕,然后擺放按鈕的位置和改變按鈕的標題和名字:
我們先編輯“關閉”按鈕的代碼,雙擊這個按鈕就可以寫它的代碼了(這個按鈕的代碼比較簡單,
所以我們先寫它吧。雙擊這個按鈕是編輯這個按鈕的默認事件,按鈕的默認事件是“Click”):
再來編寫“九九乘法表”的代碼吧:
我們來編寫一個模塊,為了實現往excel表格里面寫入乘法表的功能:
然后給“生成到工作表”按鈕添加代碼:
最終的代碼是如下圖所示:
3、我們在輸入命令的時候如果拼寫正確系統會自動把命令的首字母大寫的,如果輸入錯誤就
不會首字母大寫了,這個也是我們排錯的一個方法(但是vba中關鍵字是不區分大小寫的)。
【1.5 VBA基本概念】
1、看看下面吧:
2、如果沒有指定枚舉數據中元素的值的話那么它的默認值是從0開始的數字。如下圖中的從
“星期日”開始到“星期六”的值分別是0-6:
3、注意枚舉數據類型和用戶定義數據類型必須要放在聲明的部分:
4、看看下面吧:
如下圖所示的strName就是模塊級變量,下面的三個過程都是可以使用它的。而x就是過程變量
了,它只能在test1這個過程里面使用,在test2里面使用就會出錯的。如果把strName聲明成全
局變量的話,那么在其它的模塊中也是可以使用它的(的意思就是在聲明變量的時
候強制要指定這個變量的數據類型,如果不指定變量的數據類型是會報錯的)。
5、VBA中的英文字符是不區分大小寫的。
6、如果在聲明變量的時候不指明變量的數據類型的話,這個變量就是變體類型的數據類型,
也就是可以存儲任何的數據類型的數據,這個我們后面的課程還會講到的。但是如果用這種變體類
型的變量可能會出現一些異常的,所以可以用 “強制聲明變量”,這樣一來在定義
變量時如果不給出數據類型的話系統是不會通過的。
7、在運行程序的時候工程級變量和模塊變量都是一直保存在內存之中的,所以我們才可以一
直使用它,而過程變量會在這個過程結束后也就從內存中消失了。
8、如果我們想要過程變量的值一直存在不消失的話就需要把這個變量用static聲明成靜態
變量了(和工程級變量一樣當excel文件關閉后靜態變量才會消失的):
【1.6 VBA常用語句】
1、看看下面吧:
上圖中的“值”是可以相加的,也就是讓多個設置都生效,比如設置成50就是48和2都生效。
2、看看例子吧:
3、看看例子吧:
4、看看下面吧:
【1.7 程序控制結構】
1、看看下面吧:
2、看看例子吧:
下面是計算個人所得說的例子(我們可以在一個單元格內插入這個自定義的函數,那么程序就會自
動計算出你給出的工資應該繳納多少的個人所得稅了):
下圖中的curPay變量就是實際的工資數(個人所得稅是按照實際工資減去3500的部分按照不同的
百分比征收的)
看看嵌套分支結構的例子吧(Offt是一個偏移函數,是在當前單元格右邊的單元格里面顯示內
容):
3、看看下面吧:
4、看看例子吧:
【1.8 數組】
1、看看下面吧:
2、看看下面吧:
3、看看下面吧:
4、看看例子吧:
【1.9 Sub過程】
1、看看下面吧:
2、看看例子吧:
3、看看例子吧:
【1.10 function函數】
1、看看下面吧:
2、看看例子吧:
當然也可以在excel表格里面插入function函數的:
3、看看把數字金額轉換為中文大寫的例子吧:
4、看看生成彩票號碼的例子吧(randomize是隨機數發生器,rnd()是生成一個0-1的隨
機數):
這個函數返回的是一個數組,所以我們必須要用數組公式,也就是這個函數的兩邊加上了大括號了
(也就是在公式欄輸入這個函數名后按ctrl+shift+enter就是加上了大括號了,如下圖所示):
5、上例中如果想要每一位的數組都不能重復的話,就需要在生成每個數字的時候加上判斷的
條件了,也就是判斷此數字有沒有重復的,自己可以想一想。
【1.11 對象描述】
1、看看下面吧:
2、看看下面吧:
【1.12 excel對象模型】
1、看看下面吧:
2、我們不可能把所有的vba中的對象都記住,所以可以用幫助文檔來學習每個對象的使用。
3、看看下面吧:
4、對象瀏覽器還可以查找函數和常數等等。
【第13章 Excel常用對象】
1、看看下面吧:
下圖的例子就是看看打開屏幕更新后進行10000次單元格隱藏操作所用的時間,以及關閉屏幕更新
后進行相同操作所用的時間,然后用MsgBox顯示出來(進行的是偶數行的隱藏,其中
就是隱藏屏幕更新的設置)。如果每隱藏一次單元格就進
行一次屏幕更新的話就太麻煩了,所以有時我們需要進行一些操作后最后在進行屏幕更新操作:
由上圖可見關閉屏幕更新后程序的執行效率更高了。所以在進行很多數據操作的時候要注意使用這
種提高效率的方式。
現在我們把剛才隱藏的行再顯示出來,注意此處使用關閉屏幕更新的方式同樣會提高效率的:
2、看看下面的例子吧:
再看看吧:
再看看吧:
再看看吧:
3、看看例子吧。下圖中用with和end with包含起來的內容,其中“.Name”就是表示with
后面的對象的Name屬性,也就是,這里用了with就是一種簡便的寫法了,除了
name屬性其它的也是同理。是一個錯誤處理,也就是當“on error”
包含的代碼執行時出現錯誤的時候并不會報錯,而是到下一行去執行,好像相當于異常處理了:
再看看吧:
4、表示一個A1到C1的單元格區域,而就表示A1這個具體
的單元格了,也就是用冒號表示區域。
5、看看下面吧:
【1.14 常用VBA代碼】
1、看看下面吧:
此例子中我們用cell來引用單元格的,有時我們還會用到range來引用單元格,前者是用第幾行
第幾列來引用的,后者是用具體的字符串來引用的。
2、看看例子吧:
看看下面吧:
看看下面吧(此例中首先要把選中的一個區域命名為“MyRange”,然后對其進行操作):
看看下面吧(三維區域指的就是同時對多個工作表進行操作):
3、看看下面吧:
看看下面吧:
看看下面吧(下圖中判斷指定工作表是否存在的SheetExists函數不是系統提供的,而是我們自己
編寫的):
看看下面吧:
看看下面吧:
看看下面吧:
【1.15 Excel的事件】
1、看看下面吧:
2、看看例子吧:
3、看看下面吧:
看看下面吧:
看看下面?。?/span> 看看下面吧: 看看下面吧: 4、看看下面吧: 5、看看下面吧: 6、看看下面吧: 【1.16 自定義Excel 2010功能區】 1、看看下面吧: 將這個文件改名為壓縮格式的文件然后看看里面都有什么文件和文件夾吧,其實excel2010就是用 xlsm這種格式來把多個文件進行壓縮的。 2、看看怎么自定義工作區吧,新建一個excel文件后首先插入一個模塊并輸入如下的代碼: 關閉工作薄,在這個工作薄同級目錄下創建一個customUI文件夾,在這個文件夾里面新建一個文 件,命名為: 然后再把這個文件命名為,然后把customUI這個文件夾復制到這個 壓縮文件里面去: 打開“_rels”這個文件夾里面的“.rels”這個文件,在里面添加如下圖紅色矩形所示的代碼: 然后再將這個壓縮文件重新改名為“” ,打開這個文件后我 們就會發現這個文件增加了一個選項卡了: 而且這個按鈕還有插入內容的功能(就是我們前面編寫的模塊的功能): 3、上面的操作只是我們從vba開發的角度來認識一下自定義工作區的編寫步驟,其實在 excel2010中我們可以通過簡單的方法來實現的(在excel2007中可能是不行的): 4、實際上“.exlm”文件格式是一個壓縮的格式,里面保存了包括xml等的文件和文件夾的。 【1.17 創建工作表窗體】 1、看看下面吧: 下圖中的“表單控件”指的是excel的控件,而“ActiveX控件”指的是vba中的控件,我們重點 是講“表單控件”的使用。 2、在給按鈕指定了代碼之后再用鼠標左鍵單擊它就會執行代碼了,此時如果想要選中這個按 鈕的話就需要使用鼠標右鍵單擊了(右鍵單擊后就可以進行刪除按鈕或者修改按鈕等操作了)。 3、看看下面吧: 組合框要顯示的內容是一個單元格的區域,可以給組合框設置“數據源區域”。而“單元格鏈接” 的意思就是單擊這個組合框里面的內容后在哪個單元格里面顯示所選擇的序號(其它控件的“單元 格鏈接”選項也是差不多的道理): 4、我們來做一個例子吧,照著樣子用控件擺放上去就可以了: 【1.18 自定義窗體】 1、看看下面吧: 2、看看例子吧: 3、用“格式”中的對齊命令可以方便的對齊控件的位置: 【1.19 使用標準控件】 1、看看下面吧: 看看例子吧: 2、看看例子吧: 3、看看例子吧: 4、看看例子吧: 【1.20 使用Activex控件】 1、看看下面吧: 2、要完成更加強大的功能就需要用到Activex控件了,普通的控件就不能夠完成了。 3、看看我們用imagelist控件來改進信號燈的那個例子。imagelist控件是用來儲存圖片的, 而image控件如果需要圖片的時候就可以從imagelist里面直接來調用的: 看看例子吧: 效果和以前我們用3張獨立圖片的一樣,但是做起來要比以前的方便些。 4、看看下面treeview的例子吧。它用到的圖標可以也由imagelist提供: 5、看看listview的例子吧。它所用到的圖標也可以由imagelist提供: 【1.21 使用內置對話框】 1、看看下面吧: 注意這個例子用的是application的inputbox方法,而不是直接用的inputbox這個函數。 2、看看例子吧: 3、如果是如下圖的代碼就可以在打開的對話框里面進行多項選擇了: 4、看看例子吧: 5、看看下面吧: 看看例子吧: 看看例子吧: 看看例子吧: 【1.22 使用VBA控制圖表】 1、看看下面吧: 圖表分為嵌入到工作表中的,還有就是自己獨立就是一個工作表的,在使用時需要注意它們的目錄 級別是不同的,如上圖所示。 2、看看例子吧: 3、再看看吧: 4、使用這種代碼添加圖標的方法和使用工具欄添加圖標方法的作用是相同的: 【1.23 Excel加載宏】 1、看看下面吧: 看看載入加載宏的例子吧: 這樣在工具欄就出現了一個數據分析和規劃求解的欄目了: 而卸載加載項就是把如下圖的窗口的選項給取消掉選擇就可以了: 2、看看下面的例子吧: 首先在一個工作表中輸入如下圖所示的中英文單詞: 看看效果吧: 3、上面這種通過對話框的方式,或者是通過往單元格里面插入函數的方式使用起來都不是很 方便,所以我們要通過加載宏的方式。 上圖中之所以要有刪除按鈕的操作,是因為如果不刪除的話其它的工作薄也會有這個加載宏的按鈕 了: 注意要把這個文件保存為如下圖所示的格式才能讓加載宏生效: 4、我們在新建一個excel文件的時候是沒有我們新建的加載宏的: 然后我們添加上這個加載宏: 加載宏默認是存在如下圖所示的目錄中的: 這回工具欄中就有了這個加載宏了: 5、利用這個加載宏的功能我們就可以把一些常用的函數存儲成加載宏的格式,然后通過在工 具欄上添加加載宏的方式就可以方便的使用了。 【1.24 使用類模塊】 1、看看下面吧: 看看例子吧: 2、看看窗體的代碼吧: 3、看看效果吧: 【1.25 調用API】 1、看看下面吧: 2、我們使用vba自帶的函數只能開發有限功能的程序,可是如果調用了windows的api就可 以開發出功能更為全面的程序了。可以從網上下載一個API函數的幫助文檔,以方便你查找和使用。 3、看看例子吧: 下面是用vba函數操作注冊表: 看看用API函數操作注冊表的例子吧: 4、看看獲取內存信息的API函數的例子吧: 【1.26 數據庫編程】 1、看看下面吧: 2、對于大數據的存儲和處理,數據庫比較適合,而對于數據的查看和圖形化excel使用起來 又很方便,所以經常把兩者結合起來使用。 3、看看例子吧: 首先我們看看要訪問的access數據庫里面的內容: 看看在vba里面的代碼吧: 上圖中的“工作單位”是“T_UnitInfo”這個數據表里面的內容,這個就是數據表之間的聯系(因 為如果我們直接把工作單位寫在“T_Member”這個數據表里面的話,那么如果以后要是想要修改這 個工作單位名稱的話那么我們就需要把很多東西都給修改了,而如果利用這種表之間的聯系的話我 們只需要修改“T_UnitInfo”這個表里面的內容就可以了,這樣就方便了不少): 看看vab里面的代碼吧。注意要使用ado對象就首先要先添加這個對象的引用: 【第27章 使用文件對象模型】 1、看看下面吧: 2、看看下面吧: 3、看看例子吧: 再看看吧: 再看看吧: 【第28章 控制Office其他程序】 1、看看下面吧: 看看excel文件里面的內容吧: 看看word文檔里面的內容吧: 我們在這個word文檔里面的不同位置插入了書簽(在進行vba編程的時候我們會用到標簽,比如 在標簽的位置插入excel里面的某項內容): 然后把這個word文檔保存為模板文件: 再看看excelvba里面的代碼吧(之前要引入word對象): 2、在excel中調用word的功能那么此時word就是服務程序,excel就是控制程序。 3、excel中最大好像是1048576行: 【第29章 Excel應用程序的安全】 1、看看下面吧: 看看例子吧: 上圖中的ShowSheet()函數是為了試驗用的,能夠讓我們看見所有的工作表,在實際發布的時候 需要把這個函數給刪除掉。 2、看看效果吧: 3、看看下面吧: 【第30章 VBA程序調試】 1、看看下面吧: 我們可以用鼠標左鍵在代碼編輯區左部單擊來設置一個斷點,這樣在程序運行到這里的時候就會暫 停并等待你的操作。 2、程序有三種狀態,即設計狀態、運行狀態和中斷狀態。 3、監視器可以監視變量的值: 再看看吧: 4、看看本地窗口的使用吧(能夠顯示當前過程中的變量,不能看其他過程中的變量): 5、看看立即窗口的使用吧(立即窗口就像打草稿似得,能夠把結果立即顯示出來): 在代碼中也可以用輸出內容的: 【第31章 VBA程序優化】 1、看看下面吧: 2、EXCELvba是宏語言,所以執行效率就相比其他語句比較低,所以我們應更注意對于程序 的優化處理。 3、如果循環體里面我們可以優化的話,那么每次執行循環都節省點時間的話總共循環可以節 省的時間就不少了;在對象集合里面我們要盡量使用for each?next這種循環結構,他要比普通 的for循環執行效率高。 4、把一個對象賦值給一個變量,那么每次操作這個變量要比直接操作這個對象的效率要高。 5、使用“早期變量”的意思就是聲明一個變量的時候就指定這個變量的類型,盡量不要使用 變體類型的。 6、我們可以直接對一個對象進行操作,而不用先激活然后再選擇再操作,這樣的效率比較低, 沒有直接操作的效率高。 7、 “使用合理的對象書寫形式”指的是我們使用不同的對象書寫形式會造成執行效率的不 同,比如cells這種調用單元格的形式就要比range這種形式的效率高。 【第32章 VBA錯誤處理】 1、看看下面吧: 2、看看例子吧: 是模擬產生一個錯誤。 3、看看下面的例子吧: 再看看吧: 再看看吧: 4、再看看例子吧: 【第33章 制作幫助系統】 1、看看下面吧: 如上圖中的批注或者說明信息都可以稱是簡單的幫助系統。但是我們所說的幫助系統是要做一個幫 助文件。 看看例子吧。首先我們準備好了3個網頁: 然后打開制作幫助文件的軟件(是個免費軟件,可以在網上下載): 雖然這個幫助文件創建好了,但是功能還不完善。我們可以給這個文件添加目錄等等來完善其功能: 下圖是我們自定義的目錄名: 給這個目錄設定標題,和指定一個連接: 然后在這目錄下面添加頁面: 然后再添加一個頁面。然后保存: 然后我們還可以創建一個索引。先給這個索引起名: 然后在這個索引里面插入關鍵字和連接: 然后再插入一個關鍵字和它的連接。然后保存: 最后編譯文件: 現在再看看這個chm文件就和剛才不同了: 2、一般簡單的vba程序不需要給它制作幫助系統,但是比較復雜的vba程序需要給它制作幫 助系統,以便用戶能夠快速的掌握其用法。 3、用微軟提供的工具我們就可以制作chm幫助文件。 4、我們看看怎么把這個幫助文件和vba程序發生聯系: 首先要指定幫助文件的路徑: 然后指定在工作薄加載的時候,只要按F1鍵就打開幫助文件:

本文發布于:2023-11-23 01:43:34,感謝您對本站的認可!
本文鏈接:http://www.newhan.cn/zhishi/a/1700675014223588.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:ExcelVBA入門到精通.doc
本文 PDF 下載地址:ExcelVBA入門到精通.pdf
| 留言與評論(共有 0 條評論) |