ExcelVBA編程實(shí)例(150例)參考模板_第1頁
ExcelVBA編程實(shí)例(150例)參考模板_第2頁
ExcelVBA編程實(shí)例(150例)參考模板_第3頁
ExcelVBA編程實(shí)例(150例)參考模板_第4頁
ExcelVBA編程實(shí)例(150例)參考模板_第5頁
已閱讀5頁,還剩96頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論