![ExcelVBA編程實(shí)例(150例)參考模板_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/3/68fccfd3-aedd-43e4-ac7d-c1629461031b/68fccfd3-aedd-43e4-ac7d-c1629461031b1.gif)
![ExcelVBA編程實(shí)例(150例)參考模板_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/3/68fccfd3-aedd-43e4-ac7d-c1629461031b/68fccfd3-aedd-43e4-ac7d-c1629461031b2.gif)
![ExcelVBA編程實(shí)例(150例)參考模板_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/3/68fccfd3-aedd-43e4-ac7d-c1629461031b/68fccfd3-aedd-43e4-ac7d-c1629461031b3.gif)
![ExcelVBA編程實(shí)例(150例)參考模板_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/3/68fccfd3-aedd-43e4-ac7d-c1629461031b/68fccfd3-aedd-43e4-ac7d-c1629461031b4.gif)
![ExcelVBA編程實(shí)例(150例)參考模板_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/3/68fccfd3-aedd-43e4-ac7d-c1629461031b/68fccfd3-aedd-43e4-ac7d-c1629461031b5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、ExcelVBA編程實(shí)例(150例)主要內(nèi)容和特點(diǎn)ExcelVBA編程入門范例主要是以一些基礎(chǔ)而簡短的VBA實(shí)例來對ExcelVBA中的常用對象及其屬性和方法進(jìn)行講解,包括應(yīng)用程序?qū)ο?、窗口、工作簿、工作表、單元格和單元格區(qū)域、圖表、數(shù)據(jù)透視表、形狀、控件、菜單和工具欄、幫助助手、格式化操作、文件操作、以及常用方法和函數(shù)及技巧等方面的應(yīng)用示例。這些例子都比較基礎(chǔ),很容易理解,因而,很容易調(diào)試并得以實(shí)現(xiàn),讓您通過具體的實(shí)例來熟悉ExcelVBA編程。 分16章共14個專題,以具體實(shí)例來對大多數(shù)常用的ExcelVBA對象進(jìn)行講解; 一般而言,每個實(shí)例都很簡短,用來說明使用VBA實(shí)現(xiàn)Excel某一功
2、能的操作; 各章內(nèi)容主要是實(shí)例,即VBA代碼,配以簡短的說明,有些例子可能配以必要的圖片,以便于理解; 您可以對這些實(shí)例進(jìn)行擴(kuò)充或組合,以實(shí)現(xiàn)您想要的功能或更復(fù)雜的操作。VBE編輯器及VBA代碼輸入和調(diào)試的基本知識在學(xué)習(xí)這些實(shí)例的過程中,最好自已動手將它們輸入到VBE編輯器中調(diào)試運(yùn)行,來查看它們的結(jié)果。當(dāng)然,您可以偷賴,將它們復(fù)制/粘貼到代碼編輯窗口后,進(jìn)行調(diào)試運(yùn)行。下面,對VBE編輯器界面進(jìn)行介紹,并對VBA代碼輸入和調(diào)試的基本知識進(jìn)行簡單的講解。激活VBE編輯器一般可以使用以下三種方式來打開VBE編輯器: 使用工作表菜單“工具宏Visual Basic編輯器”命令,如圖00-01所示; 在
3、Visual Basic工具欄上,按“Visual Basic編輯器”按鈕,如圖00-02所示; 按Alt+F11組合鍵。1 / 101圖00-01:選擇菜單“工具宏Visual Basic編輯器”命令來打開VBE編輯器 圖00-02:選擇Visual Basic工具欄上的“Visual Basic編輯器”命令按鈕來打開VBE編輯器此外,您也可以使用下面三種方式打開VBE編輯器: 在任一工作表標(biāo)簽上單擊鼠標(biāo)右鍵,在彈出的菜單中選擇“查看代碼”,則可進(jìn)入VBE編輯器訪問該工作表的代碼模塊,如圖00-03所示; 在工
4、作簿窗口左上角的Excel圖標(biāo)上單擊鼠標(biāo)右鍵,在彈出的菜單中選擇“查看代碼”,則可進(jìn)入VBE編輯器訪問活動工作簿的ThisWorkbook代碼模塊,如圖00-04所示; 選擇菜單“工具宏宏”命令打開宏對話框,若該工作簿中有宏程序,則單擊該對話框中的“編輯”按鈕即可進(jìn)行VBE編輯器代碼模塊,如圖00-05所示。 圖00-03:右擊工作表標(biāo)簽彈出菜單并選擇“查看代碼”打開VBE編輯器 圖00-04:右擊Excel圖標(biāo)彈出菜單并選擇“查看代碼”打開VBE編輯器 圖00-05:在宏對話框中單擊“編輯”按鈕打開VBE編輯器VBE編輯器窗口
5、簡介剛打開VBE編輯器時,所顯示的窗口如圖00-06所示,其中沒有代碼模塊窗口。 圖00-06:剛打開VBE編輯器時的窗口可以在“工程資源管理器”中雙擊任一對象打開代碼窗口,或者選擇菜單“插入模塊”或“插入類模塊”來打開代碼窗口。一般VBE編輯器窗口及各組成部件名稱如圖00-07所示,可以通過“視圖”菜單中的菜單項(xiàng)選擇所出現(xiàn)的窗口。同時,可以在“工程屬性”窗口中設(shè)置或修改相應(yīng)對象的屬性。 圖00-07:VBE編輯器窗口下面是帶有用戶窗體的VBE編輯器窗口,如圖00-08所示。選擇VBE菜單“插入用戶窗體”,即可插入一個用戶窗體。當(dāng)插入用戶窗體后,在“工程資源管理器”窗口中會
6、出現(xiàn)一個用戶窗體對象,“工程屬性”窗口顯示當(dāng)前用戶窗體的屬性,可對相關(guān)屬性進(jìn)行設(shè)置或修改。同時,在用戶窗體上用鼠標(biāo)單擊,會出現(xiàn)“控件工具箱”。在“工程資源管理器”窗口雙擊用戶窗體圖標(biāo),會出現(xiàn)相應(yīng)的用戶窗體;在用戶窗體圖標(biāo)或者是在用戶窗體上單擊鼠標(biāo)右鍵,然后在彈出的菜單中選擇“查看代碼”,則會出現(xiàn)用戶窗體代碼窗口。 圖00-08:VBE編輯器窗口(帶有用戶窗體)在VBE編輯器中輸入VBA代碼如前所述,您可以選擇VBE菜單“插入用戶窗體/模塊/類模塊”來插入模塊或用戶窗體以及相應(yīng)的代碼窗口。此外,您也可以在“工程資源管理器”中單擊鼠標(biāo)右鍵,從彈出的菜單中選擇“插入用戶窗體/模塊/類模塊”
7、來實(shí)現(xiàn)上面的操作。在獲取相應(yīng)的代碼模塊窗口后,就可以輸入VBA代碼了。在VBE編輯器的代碼模塊中輸入VBA代碼,通常有以下幾種方法: 手工鍵盤輸入; 使用宏錄制器,即選擇菜單“工具宏錄制新宏”命令,將所進(jìn)行的操作自動錄制成宏代碼; 復(fù)制/粘貼代碼,即將現(xiàn)有的代碼復(fù)制后,粘貼到相應(yīng)的代碼模塊中; 導(dǎo)入代碼模塊,即在VBE編輯器中選擇菜單“文件導(dǎo)入文件”或在“工程資源管理器”的任一對象上右擊鼠標(biāo)選擇菜單“導(dǎo)入文件”,選擇相應(yīng)的代碼文件導(dǎo)入。如果不想要某個模塊了,可以選擇菜單“文件移除模塊”,也可以在相應(yīng)的模塊上單擊鼠標(biāo)右鍵,從彈出的菜單中選擇“移除模塊”。此時,會彈出一個警告框,詢問在移除模塊前是
8、否將其導(dǎo)出,可以根據(jù)需要進(jìn)行選擇。也可以選擇菜單“文件導(dǎo)出文件”或在相應(yīng)的模塊上單擊鼠標(biāo)右鍵后,從彈出的菜單中選擇“導(dǎo)出文件”,將移除的模塊保存在相應(yīng)的文件夾中。這樣,以后可以對其進(jìn)行導(dǎo)入,從而加以利用。調(diào)試VBA代碼在VBE編輯器的菜單中,有兩項(xiàng)與調(diào)試運(yùn)行有關(guān)的菜單項(xiàng),即“調(diào)試”菜單和“運(yùn)行”菜單,它們提供了各種調(diào)試和運(yùn)行的手段。在我現(xiàn)階段進(jìn)行代碼調(diào)試時,常用到的有以下幾個: 逐語句??梢园碏8鍵對代碼按順序一條一條語句運(yùn)行,從而找出語句或邏輯錯誤。 設(shè)置斷點(diǎn)。在可能存在問題的語句處設(shè)置斷點(diǎn)(可通過在相應(yīng)代碼前的空白部位單擊,將會出現(xiàn)一個深紅色的橢圓即斷點(diǎn)),當(dāng)程序運(yùn)行至斷點(diǎn)處時,會中止運(yùn)行
9、。 在語句的適當(dāng)部位設(shè)置Debug.Print語句,運(yùn)行后其結(jié)果會顯示在“立即窗口”中,可以此測試或跟蹤變量的值。 在“立即窗口”中測試。對值的測試或跟蹤,也可以以“?”開頭,在“立即窗口”中輸入需要測試值的語句,按Enter回車鍵后將立即出現(xiàn)結(jié)果;對執(zhí)行語句的測試,可直接在“立即窗口”中輸入,按Enter回車鍵后將執(zhí)行。 可以按F5鍵直接運(yùn)行光標(biāo)所在位置的子程序。在執(zhí)行程序后,必須在Excel工作表中查看所得到的結(jié)果??梢杂檬髽?biāo)單擊VBE編輯器左上角的Excel圖標(biāo)或者是按Alt+F11組合鍵切換到Excel界面。(當(dāng)然,對程序代碼的調(diào)試有很多方法和技巧,留待以后對VBA進(jìn)一步研究和理解更透
10、徹后一并討論。)利用VBA幫助系統(tǒng)如果遇到疑問或錯誤,可以利用Excel自帶的VBA幫助系統(tǒng)。 可以在如圖00-09所示的部位輸入需要幫助的關(guān)鍵詞,按Enter回車鍵后將會出現(xiàn)相關(guān)主題。用鼠標(biāo)單擊相應(yīng)的主題即會出現(xiàn)詳細(xì)的幫助信息。 圖00-09:幫助搜索窗口 可以按F2鍵,調(diào)出“對象瀏覽器”窗口(如圖00-10所示),在搜索文本框中輸入需要幫助的關(guān)鍵詞,將會在“搜索結(jié)果”中出現(xiàn)一系列相關(guān)的對象及方法、屬性列表,單擊相應(yīng)的對象則會在“類”和“成員”列表框中顯示相應(yīng)的對象和方法、屬性成員列表,在成員列表中相應(yīng)的項(xiàng)目上按F1鍵即會出現(xiàn)詳細(xì)的幫助信息。(“對象瀏覽器”是一個很好
11、的幫助工具,值得好好研究) 圖00-10:對象瀏覽器窗口參考資料ExcelVBA編程入門范例參考或引用了以下書籍和資料:(1)Excel 2003高級VBA編程寶典(2)Excel 2003與VBA編程從入門到精通(中文版)(3)巧學(xué)巧用Excel 2003 VBA與宏(中文版)(4)ExcelVBA應(yīng)用程序?qū)I(yè)設(shè)計(jì)實(shí)用指南(5)ExcelVBA應(yīng)用開發(fā)與實(shí)例精講(6)一些網(wǎng)上資源更多的信息關(guān)于ExcelVBA的更多參考和學(xué)習(xí)資源,可以在上查找,有疑問也可以在ExcelHome論壇中提問。您也可以登錄我的博客,上面有很多Excel的學(xué)習(xí)資料。同時,歡迎與我聯(lián)系交流,我的e-mail
12、是:xhdsxfjy。 “學(xué)習(xí)Excel,使用VBA對Excel進(jìn)行控制操作是我很熱衷的業(yè)余愛好之一?!眆anjy第一章 Excel應(yīng)用程序?qū)ο?Application對象)及其常用方法基本操作應(yīng)用示例分類:ExcelVBA>>ExcelVBA編程入門范例Application對象代表整個Microsoft Excel應(yīng)用程序,帶有175個屬性和52個方法,可以設(shè)置整個應(yīng)用程序的環(huán)境或配置應(yīng)用程序。示例01-01:體驗(yàn)開/關(guān)屏幕更新(ScreenUpdating屬性)Sub 關(guān)閉屏幕更新() MsgBox "順序切換工作表Sheet1Sheet2Sheet3S
13、heet2,先開啟屏幕更新,然后關(guān)閉屏幕更新" Worksheets(1).Select MsgBox "目前屏幕中顯示工作表Sheet1" Application.ScreenUpdating = True Worksheets(2).Select MsgBox "顯示Sheet2了嗎?" Worksheets(3).Select MsgBox "顯示Sheet3了嗎?" Worksheets(2).Select M
14、sgBox "下面與前面執(zhí)行的程序代碼相同,但關(guān)閉屏幕更新功能" Worksheets(1).Select MsgBox "目前屏幕中顯示工作表Sheet1" & Chr(10) & "關(guān)屏屏幕更新功能" Application.ScreenUpdating = False Worksheets(2).Select MsgBox "顯示Sheet2了嗎?" Worksheets(3).Select MsgBox &q
15、uot;顯示Sheet3了嗎?" Worksheets(2).Select Application.ScreenUpdating = TrueEnd Sub示例說明:ScreenUpdating屬性用來控制屏幕更新。當(dāng)運(yùn)行一個宏程序處理涉及到多個工作表或單元格中的大量數(shù)據(jù)時,若沒有關(guān)閉屏幕更新,則會占用CPU的處理時間,從而降低程序的運(yùn)行速度,而關(guān)閉該屬性則可顯著提高程序運(yùn)行速度。示例01-02:使用狀態(tài)欄(StatusBar屬性)Sub testStatusBar() Application.DisplayStatusBar = True
16、9;開啟狀態(tài)欄顯示 '賦值狀態(tài)欄顯示的文本 Application.StatusBar = ""End Sub示例說明:StatusBar屬性用來指定顯示在狀態(tài)欄上的信息。若不想再顯示狀態(tài)欄文本,可使用Application.StatusBar = False語句關(guān)閉狀態(tài)欄顯示,也可以在程序開始將原先的狀態(tài)欄設(shè)置存儲,如使用語句oldStatusBar = Application.DisplayStatusBar將狀態(tài)欄原來的信息存儲在變量oldStatusBar,在程序運(yùn)行完成或退出時,將變量重新賦值給狀態(tài)欄,如使用語句Applicatio
17、n.DisplayStatusBar = oldStatusBar,以恢復(fù)狀態(tài)欄原狀。示例01-03:處理光標(biāo)(Cursor屬性)Sub ViewCursors() Application.Cursor = xlNorthwestArrow MsgBox "您將使用箭頭光標(biāo),切換到Excel界面查看光標(biāo)形狀" Application.Cursor = xlIBeam MsgBox "您將使用工形光標(biāo),切換到Excel界面查看光標(biāo)形狀" Application.Cursor = xlWait
18、60; MsgBox "您將使用等待形光標(biāo),切換到Excel界面查看光標(biāo)形狀" Application.Cursor = xlDefault MsgBox "您已將光標(biāo)恢復(fù)為缺省狀態(tài)"End Sub示例01-04:獲取系統(tǒng)信息Sub GetSystemInfo() MsgBox "Excel版本信息為:" & Application.CalculationVersion MsgBox "Excel當(dāng)前允許使用的內(nèi)存為:" & Application.M
19、emoryFree MsgBox "Excel當(dāng)前已使用的內(nèi)存為:" & Application.MemoryUsed MsgBox "Excel可以使用的內(nèi)存為:" & Application.MemoryTotal MsgBox "本機(jī)操作系統(tǒng)的名稱和版本為:" & Application.OperatingSystem MsgBox "本產(chǎn)品所登記的組織名為:" & Application.OrganizationName
20、0; MsgBox "當(dāng)前用戶名為:" & Application.UserName MsgBox "當(dāng)前使用的Excel版本為:" & Application.VersionEnd Sub示例說明:可以使用給UserName屬性賦值以設(shè)置用戶名稱。示例01-05:退出復(fù)制/剪切模式(CutCopyMode屬性)Sub exitCutCopyMode() Application.CutCopyMode = FalseEnd Sub示例說明:退出復(fù)制/剪切模式后,在程序運(yùn)行時所進(jìn)行的復(fù)制或剪切操作不會在原單元格區(qū)域留
21、下流動的虛框線。需要提醒的是,在程序運(yùn)行完后,應(yīng)使用Application.CutCopyMode = False語句恢復(fù)該屬性的默認(rèn)設(shè)置。示例01-06:禁止彈出警告信息(DisplayAlerts屬性)Sub testAlertsDisplay() Application.DisplayAlerts = FalseEnd Sub示例說明:在程序運(yùn)行過程中,有時由于Excel本身設(shè)置的原因,會彈出對話框,從而中斷程序的運(yùn)行,您可以在程序之前加上Application.DisplayAlerts = False語句以禁止彈出這些對話框而不影響程序正常運(yùn)行。需要注意的是,在程序運(yùn)行結(jié)
22、束前,應(yīng)使DisplayAlerts屬性恢復(fù)為缺省狀態(tài),即使用語句Application.DisplayAlerts = True。該屬性的默認(rèn)設(shè)置為True,當(dāng)將該屬性設(shè)置為False時,Excel會使直接使用對話框中默認(rèn)的選擇,從而不會因?yàn)閺棾鰧υ捒蚨绊懗绦蜻\(yùn)行。示例01-07:將Excel全屏幕顯示Sub testFullScreen() MsgBox "運(yùn)行后將Excel的顯示模式設(shè)置為全屏幕" Application.DisplayFullScreen = True MsgBox "恢復(fù)為原來的狀態(tài)"
23、60; Application.DisplayFullScreen = FalseEnd Sub示例01-08:Excel啟動的文件夾路徑Sub ExcelStartfolder() MsgBox "Excel啟動的文件夾路徑為:" & Chr(10) & Application.StartupPathEnd Sub示例01-09:打開最近使用過的文檔Sub OpenRecentFiles() MsgBox "顯示最近使用過的第三個文件名,并打開該文件" MsgBox "最近使用的第三個文件的
24、名稱為:" & Application.RecentFiles(3).Name Application.RecentFiles(3).OpenEnd Sub示例01-10:打開文件(FindFile方法)Sub FindFileOpen() On Error Resume Next MsgBox "請打開文件", vbOKOnly + vbInformation, "打開文件" If Not Application.FindFile Then MsgBo
25、x "文件未找到", vbOKOnly + vbInformation, "打開失敗" End IfEnd Sub示例說明:本示例將顯示“打開”文件對話框,若用戶未打開文件(即點(diǎn)擊“取消”按鈕),則會顯示“打開失敗”信息框。示例中使用了FindFile方法,用來顯示“打開”對話框并讓用戶打開一個文件。如果成功打開一個新文件,則該值為True。如果用戶取消了操作并退出該對話框,則該值為False。示例01-11:文件對話框操作(FileDialog屬性)Sub UseFileDialogOpen() Dim lngCount As
26、Long '開啟"打開文件"對話框 With Application.FileDialog(msoFileDialogOpen) .AllowMultiSelect = True .Show '顯示所選的每個文件的路徑 For lngCount = 1 To .SelectedItems.Count MsgBox .SelectedI
27、tems(lngCount) Next lngCount End WithEnd Sub示例說明:本示例顯示“打開文件”對話框,當(dāng)用戶在其中選擇一個或多個文件后,將依次顯示每個文件的路徑。其中,F(xiàn)ileDialog屬性返回打開和保存對話框中一系列對象的集合,您可以對該集合對象的屬性進(jìn)行進(jìn)一步的設(shè)置,如上例中的AllowMultiSelect屬性設(shè)置為True將允許用戶選擇多個文件。示例01-12:保存Excel的工作環(huán)境Sub 保存Excel的工作環(huán)境() MsgBox "將Excel的工作環(huán)境保存到D:ExcelSampl
28、e中" Application.SaveWorkspace "D:ExcelSampleSample"End Sub示例說明:運(yùn)行本程序后,將工作簿以帶后綴名.xlw保存到D盤的ExcelSample文件夾中,生成的文件全名為Sample.xlw。當(dāng)改變工作簿并保存時,Excel會詢問是覆蓋原文件還是保存副本。示例01-13:改變Excel工作簿名字(Caption屬性)Sub SetCaption() Application.Caption = "My ExcelBook"End Sub示例說明:運(yùn)行本程序后,將工作簿
29、左上角Excel圖標(biāo)右側(cè)的“Microsoft Excel”改為“My ExcelBook”。示例01-14:使用InputBox方法Sub SampleInputBox() Dim vInput vInput = InputBox("請輸入用戶名:", "獲取用戶名", Application.UserName) MsgBox "您好!" & vInput & ".很高興能認(rèn)識您.", vbOKOnly, "打招呼"End Sub示例01-1
30、5:設(shè)置頁邊距(CentimetersToPoints方法)Sub SetLeftMargin() MsgBox "將工作表Sheet1的左頁邊距設(shè)為5厘米" Worksheets("Sheet1").PageSetup.LeftMargin = Application.CentimetersToPoints(5)End Sub示例01-16:使用Windows的計(jì)算器(ActivateMicrosoftApp方法)Sub CallCalculate() Application.ActivateMicrosoftApp
31、 Index:=0End Sub示例說明:運(yùn)行本程序后,將調(diào)用Windows的計(jì)算器。示例01-17:在程序中運(yùn)行另一個宏(Run方法)Sub runOtherMacro() MsgBox "本程序先選擇A1至C6單元格區(qū)域后執(zhí)行DrawLine宏" ActiveSheet.Range("A2:C6").Select Application.Run "DrawLine"End Sub示例01-18:在指定的時間執(zhí)行宏(OnTime方法)Sub AfterTimetoRun() MsgBo
32、x "從現(xiàn)在開始,10秒后執(zhí)行程序testFullScreen" Application.OnTime Now + TimeValue("00:00:10"), "testFullScreen"End Sub示例說明:運(yùn)行本程序后,在10秒后將執(zhí)行程序testFullScreen。示例01-19:暫時停止宏運(yùn)行(Wait方法)Sub Stop5sMacroRun() Dim SetTime As Date MsgBox "按下確定,5秒后執(zhí)行程序testFullScreen"
33、160; SetTime = DateAdd("s", 5, Now() Application.Wait SetTime Call testFullScreenEnd Sub示例說明:運(yùn)行本程序后,按下彈出的提示框中的“確定”按鈕,等待5秒后執(zhí)行另一程序testFullScreen。示例01-20:按下指定的按鍵后執(zhí)行程序(OnKey方法)示例01-20-1Sub PressKeytoRun() MsgBox "按下Ctrl+D后將執(zhí)行程序testFullScreen" Application.OnKey
34、 "d", "testFullScreen"End Sub示例01-20-2Sub ResetKey() MsgBox "恢復(fù)原來的按鍵狀態(tài)" Application.OnKey "d"End Sub示例說明:Onkey方法的作用主要是指定特定的鍵,當(dāng)按下指定的鍵時運(yùn)行相應(yīng)的宏程序,或者按下指定的鍵時,使Excel屏蔽特定的功能。示例01-21:重新計(jì)算工作簿示例01-21-1Sub CalculateAllWorkbook() Application.CalculateEnd
35、Sub示例說明:當(dāng)工作簿的計(jì)算模式被設(shè)置為手動模式后,運(yùn)用Calculate方法可以重新計(jì)算所有打開的工作簿、工作簿中特定的工作表或者工作表中指定的單元格區(qū)域。示例01-21-2Sub CalculateFullSample() If Application.CalculationVersion <> Workbooks(1).CalculationVersion Then Application.CalculateFull End IfEnd Sub示例說明:本示例先將當(dāng)前Microsoft Excel的版本與上次計(jì)算該
36、工作簿的Excel版本進(jìn)行比較,如果兩個版本不同,則對所有打開工作簿中的數(shù)據(jù)進(jìn)行一次完整計(jì)算。其中,CalculationVersion屬性返回工作簿的版本信息。示例01-22:控制函數(shù)重新計(jì)算(Volatile方法)Function NonStaticRand() '當(dāng)工作表中任意單元格重新計(jì)算時本函數(shù)更新 Application.Volatile True NonStaticRand = Rnd()End Function示例說明:本示例摸仿Excel中的Rand()函數(shù),當(dāng)工作表單元格發(fā)生變化時,都會重新計(jì)算該函數(shù)。在例子中,使用了Volati
37、le方法,強(qiáng)制函數(shù)進(jìn)行重新計(jì)算,即無論何時重新計(jì)算工作表,該函數(shù)都會重新計(jì)算。示例01-23:利用工作表函數(shù)(WorksheetFunction屬性)Sub WorksheetFunctionSample() Dim myRange As Range, answer Set myRange = Worksheets("Sheet1").Range("A1:C10") answer = Application.WorksheetFunction.Min(myRange) MsgBox answerEnd Su
38、b示例說明:本示例獲取工作表Sheet1中單元格區(qū)域A1:C10中的最小值,使用了工作表函數(shù)Min()。一般,使用WorksheetFunction屬性引用工作表函數(shù),但如果VBA自帶有實(shí)現(xiàn)相同功能的函數(shù),則直接使用該函數(shù),否則會出現(xiàn)錯誤。示例01-24:獲取重疊區(qū)域(Intersect方法)Sub IntersectRange() Dim rSect As Range Worksheets("Sheet1").Activate Set rSect = Application.Intersect(Range("rg1"
39、), Range("rg2") If rSect Is Nothing Then MsgBox "沒有交叉區(qū)域" Else rSect.Select End IfEnd Sub示例說明:本示例在工作表Sheet1中選定兩個命名區(qū)域rg1和rg2的重疊區(qū)域,如果所選區(qū)域不重疊,則顯示一條相應(yīng)的信息。其中,Intersect方法返回一個Range對象,代表兩個或多個范圍重疊的矩形區(qū)域。示例01-25:獲取路徑分隔符(PathSeparator屬性)Su
40、b GetPathSeparator() MsgBox "路徑分隔符為" & Application.PathSeparatorEnd Sub示例說明:本示例使用PathSeparator屬性返回路徑分隔符(“”)。示例01-26:快速移至指定位置(Goto方法)Sub GotoSample() Application.Goto Reference:=Worksheets("Sheet1").Range("A154"), _ scroll:=TrueEnd Sub示例說
41、明:本示例運(yùn)行后,將當(dāng)前單元格移至工作表Sheet1中的單元格A154。 示例01-27:顯示內(nèi)置對話框(Dialogs屬性)Sub DialogSample() Application.Dialogs(xlDialogOpen).ShowEnd Sub示例說明:本示例顯示Excel的“打開”文件對話框。其中,Dialogs屬性返回的集合代表所有的Excel內(nèi)置對話框。示例01-28:退出Excel(SendKeys方法)Sub SendKeysSample() Application.SendKeys ("%fx")End Sub示例說明:本示例使
42、用SendKeys方法退出Excel,若未保存,則會彈出提示對話框并讓用戶作出相應(yīng)的選擇。SendKeys方法的作用是摸擬鍵盤輸入,如例中的“%fx”表示在Excel中同時按下Alt、F和X三個鍵。示例01-29:關(guān)閉ExcelSub 關(guān)閉Excel() MsgBox "Excel將會關(guān)閉" Application.QuitEnd Sub示例說明:運(yùn)行本程序后,若該工作簿未保存,則會彈出對話框詢問是否保存。 =(by fanjy)第二章 窗口(Window對象)基本操作應(yīng)用示例(一)分類:ExcelVBA>>ExcelVBA編
43、程入門范例Window對象代表一個窗口,約有48個屬性和14個方法,能對窗口特性進(jìn)行設(shè)置和操作。Window對象是Windows集合中的成員,對于Application對象來說,Windows集合包含該應(yīng)用程序中的所有窗口;對于Workbook對象來說,Windows集合只包含指定工作簿中的窗口。下面介紹一些示例,以演示和說明Window對象及其屬性和方法的運(yùn)用。示例02-01:激活窗口(Activate方法)Sub SelectWindow() Dim iWin As Long, i As Long, bWin MsgBox "依次切換已打開的窗口"
44、; iWin = Windows.Count MsgBox “您已打開的窗口數(shù)量為:” & iWin For i = 1 To iWin Windows(i).Activate bWin = MsgBox("您激活了第 " & i & "個窗口,還要繼續(xù)嗎?", vbYesNo) If bWin = vbNo Then Exit Sub Next iEnd Sub示例02-02
45、:窗口狀態(tài)(WindowState屬性)示例02-02-01Sub WindowStateTest() MsgBox "當(dāng)前活動工作簿窗口將最小化" Windows(1).WindowState = xlMinimized MsgBox "當(dāng)前活動工作簿窗口將恢復(fù)正常" Windows(1).WindowState = xlNormal MsgBox "當(dāng)前活動工作簿窗口將最大化" Windows(1).WindowState = xlMaximizedEnd S
46、ub示例說明:使用WindowState屬性可以返回或者設(shè)置窗口的狀態(tài)。示例中,常量xlMinimized、xlNormal和xlMaximized分別代表窗口不同狀態(tài)值,Windows(1)表示當(dāng)前活動窗口??梢允褂肳indows(index)來返回單個的Window對象,其中的index為窗口的名稱或編號,活動窗口總是Windows(1)。示例02-02-02Sub testWindow() '測試Excel應(yīng)用程序窗口狀態(tài) MsgBox "應(yīng)用程序窗口將最大化" Application.WindowState = xlMax
47、imized Call testWindowState MsgBox "應(yīng)用程序窗口將恢復(fù)正常" Application.WindowState = xlNormal MsgBox "應(yīng)用程序窗口已恢復(fù)正常" '測試活動工作簿窗口狀態(tài) MsgBox "當(dāng)前活動工作簿窗口將最小化" ActiveWindow.WindowState = xlMinimized
48、60; Call testWindowState MsgBox "當(dāng)前活動工作簿窗口將最大化" ActiveWindow.WindowState = xlMaximized Call testWindowState MsgBox "當(dāng)前活動工作簿窗口將恢復(fù)正常" ActiveWindow.WindowState = xlNormal
49、; Call testWindowState MsgBox "應(yīng)用程序窗口將最小化" Application.WindowState = xlMinimized Call testWindowStateEnd Sub*Sub testWindowState() Select Case Application.WindowState Case xlMaximized: MsgBox "應(yīng)用程序窗口已最大化" Case xlMinimize
50、d: MsgBox "應(yīng)用程序窗口已最小化" Case xlNormal: Select Case ActiveWindow.WindowState Case xlMaximized: MsgBox "當(dāng)前活動工作簿窗口已最大化" Case xlMinimized: MsgBox "當(dāng)
51、前活動工作簿窗口已最小化" Case xlNormal: MsgBox "當(dāng)前活動工作簿窗口已恢復(fù)正常" End Select End SelectEnd Sub示例說明:本示例有兩個程序,其中testWindow()是主程序,調(diào)用子程序textWindowState(),演示了應(yīng)用程序窗口和工作簿窗口的不同狀態(tài)。當(dāng)前活動窗口一般代表當(dāng)前活動工作簿窗口,讀者可以在VBE編輯器中按F8鍵逐語句運(yùn)行testWind
52、ow()程序,觀察Excel應(yīng)用程序及工作簿窗口的不同狀態(tài)。此外,在子程序中,還運(yùn)用了嵌套的Select Case結(jié)構(gòu)。示例02-02-03Sub SheetGradualGrow() Dim x As Integer With ActiveWindow .WindowState = xlNormal .Top = 1 .Left = 1 .Height = 50 .Width = 50
53、60; For x = 50 To Application.UsableHeight .Height = x Next x For x = 50 To Application.UsableWidth .Width = x Next x .WindowState = xlMaximized End W
54、ithEnd Sub示例說明:本示例將動態(tài)演示工作簿窗口由小到大直至最大化的變化過程。在運(yùn)行程序時,您可以將VBE窗口縮小,從而在工作簿中查看動態(tài)效果,也可以在Excel中選擇菜單中的宏命令執(zhí)行以查看效果。示例02-03:切換顯示工作表元素示例02-03-01Sub testDisplayHeading() MsgBox “切換顯示/隱藏行列標(biāo)號” ActiveWindow.DisplayHeadings = Not ActiveWindow.DisplayHeadingsEnd Sub示例說明:本示例切換是否顯示工作表中的行列標(biāo)號。運(yùn)行后,工作表中的行標(biāo)號和列標(biāo)號將消
55、失;再次運(yùn)行后,行列標(biāo)號重新出現(xiàn),如此反復(fù)。您也可以將該屬性設(shè)置為False,以取消行列標(biāo)號的顯示,如ActiveWindow.DisplayHeadings = False;而將該屬性設(shè)置為True,則顯示行列標(biāo)號。示例02-03-02Sub testDisplayGridline() MsgBox “切換顯示/隱藏網(wǎng)格線” ActiveWindow.DisplayGridlines = Not ActiveWindow.DisplayGridlinesEnd Sub示例說明:本示例切換是否顯示工作表中的網(wǎng)格線。運(yùn)行后,工作表中的網(wǎng)格線消失,再次運(yùn)行后,網(wǎng)格線重新出現(xiàn)
56、,如此反復(fù)。您也可以將該屬性設(shè)置為False,以取消網(wǎng)格線顯示,如ActiveWindow.DisplayGridlines = False;而將該屬性設(shè)置為True,則顯示網(wǎng)格線。示例02-03-03Sub DisplayHorizontalScrollBar() MsgBox “切換顯示/隱藏水平滾動條” ActiveWindow.DisplayHorizontalScrollBar = _ Not ActiveWindow.DisplayHorizontalScrollBarEnd Sub示例說明:本示例切換是否顯示工作表中的水
57、平滾動條。運(yùn)行后,工作表中的水平滾動條消失,再次運(yùn)行后,水平滾動條重新出現(xiàn),如此反復(fù)。您也可以將該屬性設(shè)置為False,以取消水平滾動條,如ActiveWindow.DisplayHorizontalScrollBar = False;而將該屬性設(shè)置為True,則顯示水平滾動條。同理,DisplayVerticalScrollBar屬性將用來設(shè)置垂直滾動條。示例02-03-04Sub DisplayScrollBar() MsgBox "切換顯示/隱藏水平和垂直滾動條" Application.DisplayScrollBars = Not (App
58、lication.DisplayScrollBars)End Sub示例說明:本示例切換是否顯示工作表中的水平和垂直滾動條。運(yùn)行后,工作表中的水平和垂直滾動條同時消失,再次運(yùn)行后,水平和垂直滾動條重新出現(xiàn),如此反復(fù)。您也可以將該屬性設(shè)置為False,以取消水平和垂直滾動條顯示,如Application.DisplayScrollBars= False;而將該屬性設(shè)置為True,則顯示水平和垂直滾動條。示例02-04:顯示公式(DisplayFormulas屬性)Sub DisplayFormula() MsgBox “顯示工作表中包含公式的單元格中的公式” Active
59、Window.DisplayFormulas = TrueEnd Sub示例說明:本程序運(yùn)行后,工作表中含有公式的單元格將顯示公式而不是數(shù)值。若要顯示數(shù)值,則將該屬性設(shè)置為False,或者,如果工作表中的公式顯示的是結(jié)果數(shù)值,則該屬性為False。示例02-05:顯示/隱藏工作表標(biāo)簽(DisplayWorkbookTabs屬性)Sub testDisplayWorkbookTab() MsgBox “隱藏工作表標(biāo)簽” ActiveWindow.DisplayWorkbookTabs = FalseEnd Sub示例說明:本程序運(yùn)行后,工作表標(biāo)簽消失。將該屬性設(shè)置為Tru
60、e,重新顯示工作表標(biāo)簽。示例02-06:命名活動窗口(Caption屬性)Sub testCaption() MsgBox "當(dāng)前活動工作簿窗口的名字是:" & ActiveWindow.Caption ActiveWorkbook.Windows(1).Caption = "我的工作簿" MsgBox "當(dāng)前活動工作簿窗口的名字是:" & ActiveWindow.CaptionEnd Sub示例說明:本程序運(yùn)行后,顯示當(dāng)前活動工作簿窗口原先的名稱(即工作簿窗口未處于最大化狀態(tài)時,
61、出現(xiàn)在窗口頂部標(biāo)題欄中的文字),然后設(shè)置當(dāng)前活動工作簿窗口名稱,即使用語句ActiveWorkbook.Windows(1).Caption = "我的工作簿",最后顯示當(dāng)前活動工作簿窗口的新名稱。改變窗口的標(biāo)題并不會改變工作簿的名稱。示例02-07:移動窗口到指定位置(ScrollRow屬性和ScrollColumn屬性)Sub testScroll() MsgBox “將當(dāng)前窗口工作表左上角單元格移至第10行第3列” ActiveWindow.ScrollRow = 10 ActiveWindow.ScrollColumn = 3En
62、d Sub示例說明:本程序運(yùn)行后,當(dāng)前活動窗口左上角單元格為第10行第3列??梢酝ㄟ^設(shè)置這兩個屬性來移動窗口到指定的位置,也可以返回指定窗格或窗口最左上面的行號或列號。示例02-08:調(diào)整窗口(EnableResize屬性)Sub testResize() MsgBox “設(shè)置窗口大小不可調(diào)整” ActiveWindow.EnableResize = FalseEnd Sub示例說明:測試本程序前,將當(dāng)前工作簿窗口恢復(fù)為正常狀態(tài)(即讓工作簿標(biāo)題可見),運(yùn)行程序后,當(dāng)前工作簿窗口將不能調(diào)整其大小,右上角的最小化最大化按鈕將消失(即隱藏最大化和最小化按鈕)。該屬性設(shè)置為Tr
63、ue,則能調(diào)整窗口大小。示例02-09:拆分窗格示例02-09-01Sub SplitWindow1() Dim iRow As Long, iColumn As Long MsgBox "以活動單元格為基準(zhǔn)拆分窗格" iRow = ActiveCell.Row iColumn = ActiveCell.Column With ActiveWindow .SplitColumn = iColumn .SplitRow = iRow
64、End With MsgBox "恢復(fù)原來的窗口狀態(tài)" ActiveWindow.Split = FalseEnd Sub示例02-09-02Sub SplitWindow() Dim iRow As Long, iColumn As Long MsgBox "以活動單元格為基準(zhǔn)拆分窗格" iRow = ActiveCell.Row iColumn = ActiveCell.Column With ActiveWindow .SplitColumn = iColumn .SplitRow = iRow End
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度炊事員臨時聘用合同執(zhí)行與變更管理細(xì)則
- 湘教版數(shù)學(xué)九年級下冊2.5《直線與圓的位置關(guān)系》聽評課記錄5
- 2025年退休返聘人員解除工作合同協(xié)議書
- 二零二五年度合同協(xié)議關(guān)于文化旅游產(chǎn)業(yè)合作
- 2025年度生物制藥研發(fā)團(tuán)隊(duì)聘用合同解除通知書
- 二零二五年度股東向公司提供應(yīng)急災(zāi)害救助借款合同
- 二零二五年度羽毛球館設(shè)施租賃及賽事承辦服務(wù)合同
- 魯教版歷史六年級上冊第24課《承上啟下的魏晉南北朝文化(二)》聽課評課記錄
- 人教版九年級數(shù)學(xué)上冊:21.3 實(shí)際問題與一元二次方程 聽評課記錄2
- 部編版道德與法治九年級上冊4.2《凝聚法治共識》聽課評課記錄
- 蒙特利爾認(rèn)知評估量表北京版
- 危險(xiǎn)化學(xué)品目錄2023
- TSXDZ 052-2020 煤礦礦圖管理辦法
- GB/T 7631.18-2017潤滑劑、工業(yè)用油和有關(guān)產(chǎn)品(L類)的分類第18部分:Y組(其他應(yīng)用)
- 2022年第六屆【普譯獎】全國大學(xué)生英語翻譯大賽
- GB/T 14258-2003信息技術(shù)自動識別與數(shù)據(jù)采集技術(shù)條碼符號印制質(zhì)量的檢驗(yàn)
- 政府資金項(xiàng)目(榮譽(yù))申報(bào)獎勵辦法
- 最新如何進(jìn)行隔代教育專業(yè)知識講座課件
- 當(dāng)前警察職務(wù)犯罪的特征、原因及防范,司法制度論文
- 奧特萊斯專題報(bào)告(經(jīng)典)-課件
- 《新制度經(jīng)濟(jì)學(xué)》配套教學(xué)課件
評論
0/150
提交評論