ExcelVBA編程150實例大全_第1頁
ExcelVBA編程150實例大全_第2頁
ExcelVBA編程150實例大全_第3頁
ExcelVBA編程150實例大全_第4頁
ExcelVBA編程150實例大全_第5頁
已閱讀5頁,還剩77頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、Excel VBA編程實例150例VBE編輯器及VBA代碼輸入和調(diào)試的基本知識在學(xué)習(xí)這些實例的過程中,最好自已動手將它們輸入到VBE編輯器中調(diào)試運行,來查看它們的結(jié)果。當(dāng)然,您可以偷賴,將它們復(fù)制/粘貼到代碼編輯窗口后,進行調(diào)試運行。下面,對VBE編輯器界面進行介紹,并對VBA代碼輸入和調(diào)試的基本知識進行簡單的講解。激活VBE編輯器一般可以使用以下三種方式來打開VBE編輯器: 使用工作表菜單“工具宏Visual Basic編輯器”命令,如圖00-01所示; 在Visual Basic工具欄上,按“Visual Basic編輯器”按鈕,如圖00-02所示; 按Alt+F11組合鍵。圖00-01:

2、選擇菜單“工具宏Visual Basic編輯器”命令來打開VBE編輯器圖00-02:選擇Visual Basic工具欄上的“Visual Basic編輯器”命令按鈕來打開VBE編輯器此外,您也可以使用下面三種方式打開VBE編輯器: 在任一工作表標(biāo)簽上單擊鼠標(biāo)右鍵,在彈出的菜單中選擇“查看代碼”,則可進入VBE編輯器訪問該工作表的代碼模塊,如圖00-03所示; 在工作簿窗口左上角的Excel圖標(biāo)上單擊鼠標(biāo)右鍵,在彈出的菜單中選擇“查看代碼”,則可進入VBE編輯器訪問活動工作簿的ThisWorkbook代碼模塊,如圖00-04所示; 選擇菜單“工具宏宏”命令打開宏對話框,若該工作簿中有宏程序,則單

3、擊該對話框中的“編輯”按鈕即可進行VBE編輯器代碼模塊,如圖00-05所示。圖00-03:右擊工作表標(biāo)簽彈出菜單并選擇“查看代碼”打開VBE編輯器圖00-04:右擊Excel圖標(biāo)彈出菜單并選擇“查看代碼”打開VBE編輯器圖00-05:在宏對話框中單擊“編輯”按鈕打開VBE編輯器VBE編輯器窗口簡介剛打開VBE編輯器時,所顯示的窗口如圖00-06所示,其中沒有代碼模塊窗口。圖00-06:剛打開VBE編輯器時的窗口可以在“工程資源管理器”中雙擊任一對象打開代碼窗口,或者選擇菜單“插入模塊”或“插入類模塊”來打開代碼窗口。一般VBE編輯器窗口及各組成部件名稱如圖00-07所示,可以通過“視圖”菜單中

4、的菜單項選擇所出現(xiàn)的窗口。同時,可以在“工程屬性”窗口中設(shè)置或修改相應(yīng)對象的屬性。圖00-07:VBE編輯器窗口下面是帶有用戶窗體的VBE編輯器窗口,如圖00-08所示。選擇VBE菜單“插入用戶窗體”,即可插入一個用戶窗體。當(dāng)插入用戶窗體后,在“工程資源管理器”窗口中會出現(xiàn)一個用戶窗體對象,“工程屬性”窗口顯示當(dāng)前用戶窗體的屬性,可對相關(guān)屬性進行設(shè)置或修改。同時,在用戶窗體上用鼠標(biāo)單擊,會出現(xiàn)“控件工具箱”。在“工程資源管理器”窗口雙擊用戶窗體圖標(biāo),會出現(xiàn)相應(yīng)的用戶窗體;在用戶窗體圖標(biāo)或者是在用戶窗體上單擊鼠標(biāo)右鍵,然后在彈出的菜單中選擇“查看代碼”,則會出現(xiàn)用戶窗體代碼窗口。圖00-08:V

5、BE編輯器窗口(帶有用戶窗體)在VBE編輯器中輸入VBA代碼如前所述,您可以選擇VBE菜單“插入用戶窗體/模塊/類模塊”來插入模塊或用戶窗體以及相應(yīng)的代碼窗口。此外,您也可以在“工程資源管理器”中單擊鼠標(biāo)右鍵,從彈出的菜單中選擇“插入用戶窗體/模塊/類模塊”來實現(xiàn)上面的操作。在獲取相應(yīng)的代碼模塊窗口后,就可以輸入VBA代碼了。在VBE編輯器的代碼模塊中輸入VBA代碼,通常有以下幾種方法: 手工鍵盤輸入; 使用宏錄制器,即選擇菜單“工具宏錄制新宏”命令,將所進行的操作自動錄制成宏代碼; 復(fù)制/粘貼代碼,即將現(xiàn)有的代碼復(fù)制后,粘貼到相應(yīng)的代碼模塊中; 導(dǎo)入代碼模塊,即在VBE編輯器中選擇菜單“文件

6、導(dǎo)入文件”或在“工程資源管理器”的任一對象上右擊鼠標(biāo)選擇菜單“導(dǎo)入文件”,選擇相應(yīng)的代碼文件導(dǎo)入。如果不想要某個模塊了,可以選擇菜單“文件移除模塊”,也可以在相應(yīng)的模塊上單擊鼠標(biāo)右鍵,從彈出的菜單中選擇“移除模塊”。此時,會彈出一個警告框,詢問在移除模塊前是否將其導(dǎo)出,可以根據(jù)需要進行選擇。也可以選擇菜單“文件導(dǎo)出文件”或在相應(yīng)的模塊上單擊鼠標(biāo)右鍵后,從彈出的菜單中選擇“導(dǎo)出文件”,將移除的模塊保存在相應(yīng)的文件夾中。這樣,以后可以對其進行導(dǎo)入,從而加以利用。調(diào)試VBA代碼在VBE編輯器的菜單中,有兩項與調(diào)試運行有關(guān)的菜單項,即“調(diào)試”菜單和“運行”菜單,它們提供了各種調(diào)試和運行的手段。在我現(xiàn)階

7、段進行代碼調(diào)試時,常用到的有以下幾個: 逐語句??梢园碏8鍵對代碼按順序一條一條語句運行,從而找出語句或邏輯錯誤。 設(shè)置斷點。在可能存在問題的語句處設(shè)置斷點(可通過在相應(yīng)代碼前的空白部位單擊,將會出現(xiàn)一個深紅色的橢圓即斷點),當(dāng)程序運行至斷點處時,會中止運行。 在語句的適當(dāng)部位設(shè)置Debug.Print語句,運行后其結(jié)果會顯示在“立即窗口”中,可以此測試或跟蹤變量的值。 在“立即窗口”中測試。對值的測試或跟蹤,也可以以“?”開頭,在“立即窗口”中輸入需要測試值的語句,按Enter回車鍵后將立即出現(xiàn)結(jié)果;對執(zhí)行語句的測試,可直接在“立即窗口”中輸入,按Enter回車鍵后將執(zhí)行。 可以按F5鍵直接

8、運行光標(biāo)所在位置的子程序。在執(zhí)行程序后,必須在Excel工作表中查看所得到的結(jié)果??梢杂檬髽?biāo)單擊VBE編輯器左上角的Excel圖標(biāo)或者是按Alt+F11組合鍵切換到Excel界面。(當(dāng)然,對程序代碼的調(diào)試有很多方法和技巧,留待以后對VBA進一步研究和理解更透徹后一并討論。)利用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所示),在搜索文本框中輸入需要

9、幫助的關(guān)鍵詞,將會在“搜索結(jié)果”中出現(xiàn)一系列相關(guān)的對象及方法、屬性列表,單擊相應(yīng)的對象則會在“類”和“成員”列表框中顯示相應(yīng)的對象和方法、屬性成員列表,在成員列表中相應(yīng)的項目上按F1鍵即會出現(xiàn)詳細(xì)的幫助信息。(“對象瀏覽器”是一個很好的幫助工具,值得好好研究) 圖00-10:對象瀏覽器窗口參考資料ExcelVBA編程入門范例參考或引用了以下書籍和資料:(1)Excel 2003高級VBA編程寶典(2)Excel 2003與VBA編程從入門到精通(中文版)(3)巧學(xué)巧用Excel 2003 VBA與宏(中文版)(4)ExcelVBA應(yīng)用程序?qū)I(yè)設(shè)計實用指南(5)ExcelVBA應(yīng)用開發(fā)與實例精講

10、(6)一些網(wǎng)上資源更多的信息關(guān)于ExcelVBA的更多參考和學(xué)習(xí)資源,可以在上查找,有疑問也可以在ExcelHome論壇中提問。您也可以登錄我的博客,上面有很多Excel的學(xué)習(xí)資料。同時,歡迎與我聯(lián)系交流,我的e-mail是:。 “學(xué)習(xí)Excel,使用VBA對Excel進行控制操作是我很熱衷的業(yè)余愛好之一。”fanjy第一章 Excel應(yīng)用程序?qū)ο?Application對象)及其常用方法基本操作應(yīng)用示例分類:ExcelVBAExcelVBA編程入門范例Applicati

11、on對象代表整個Microsoft Excel應(yīng)用程序,帶有175個屬性和52個方法,可以設(shè)置整個應(yīng)用程序的環(huán)境或配置應(yīng)用程序。示例01-01:體驗開/關(guān)屏幕更新(ScreenUpdating屬性)Sub 關(guān)閉屏幕更新() MsgBox 順序切換工作表Sheet1Sheet2Sheet3Sheet2,先開啟屏幕更新,然后關(guān)閉屏幕更新 Worksheets(1).Select MsgBox 目前屏幕中顯示工作表Sheet1 Application.ScreenUpdating = True Worksheets(2).Select MsgBox 顯示Sheet2了嗎? Worksheets(3)

12、.Select MsgBox 顯示Sheet3了嗎? Worksheets(2).Select MsgBox 下面與前面執(zhí)行的程序代碼相同,但關(guān)閉屏幕更新功能 Worksheets(1).Select MsgBox 目前屏幕中顯示工作表Sheet1 & Chr(10) & 關(guān)屏屏幕更新功能 Application.ScreenUpdating = False Worksheets(2).Select MsgBox 顯示Sheet2了嗎? Worksheets(3).Select MsgBox 顯示Sheet3了嗎? Worksheets(2).Select Application.Screen

13、Updating = TrueEnd Sub示例說明:ScreenUpdating屬性用來控制屏幕更新。當(dāng)運行一個宏程序處理涉及到多個工作表或單元格中的大量數(shù)據(jù)時,若沒有關(guān)閉屏幕更新,則會占用CPU的處理時間,從而降低程序的運行速度,而關(guān)閉該屬性則可顯著提高程序運行速度。示例01-02:使用狀態(tài)欄(StatusBar屬性)Sub testStatusBar() Application.DisplayStatusBar = True 開啟狀態(tài)欄顯示 賦值狀態(tài)欄顯示的文本 Application.StatusBar = End Sub示例

14、說明:StatusBar屬性用來指定顯示在狀態(tài)欄上的信息。若不想再顯示狀態(tài)欄文本,可使用Application.StatusBar = False語句關(guān)閉狀態(tài)欄顯示,也可以在程序開始將原先的狀態(tài)欄設(shè)置存儲,如使用語句oldStatusBar = Application.DisplayStatusBar將狀態(tài)欄原來的信息存儲在變量oldStatusBar,在程序運行完成或退出時,將變量重新賦值給狀態(tài)欄,如使用語句Application.DisplayStatusBar = oldStatusBar,以恢復(fù)狀態(tài)欄原狀。示例01-03:處理光標(biāo)(Cursor屬性)Sub ViewCursors()

15、Application.Cursor = xlNorthwestArrow MsgBox 您將使用箭頭光標(biāo),切換到Excel界面查看光標(biāo)形狀 Application.Cursor = xlIBeam MsgBox 您將使用工形光標(biāo),切換到Excel界面查看光標(biāo)形狀 Application.Cursor = xlWait 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版本

16、信息為: & Application.CalculationVersion MsgBox Excel當(dāng)前允許使用的內(nèi)存為: & Application.MemoryFree MsgBox Excel當(dāng)前已使用的內(nèi)存為: & Application.MemoryUsed MsgBox Excel可以使用的內(nèi)存為: & Application.MemoryTotal MsgBox 本機操作系統(tǒng)的名稱和版本為: & Application.OperatingSystem MsgBox 本產(chǎn)品所登記的組織名為: & Application.OrganizationName MsgBox 當(dāng)前用戶名為:

17、 & Application.UserName MsgBox 當(dāng)前使用的Excel版本為: & Application.VersionEnd Sub示例說明:可以使用給UserName屬性賦值以設(shè)置用戶名稱。示例01-05:退出復(fù)制/剪切模式(CutCopyMode屬性)Sub exitCutCopyMode() Application.CutCopyMode = FalseEnd Sub示例說明:退出復(fù)制/剪切模式后,在程序運行時所進行的復(fù)制或剪切操作不會在原單元格區(qū)域留下流動的虛框線。需要提醒的是,在程序運行完后,應(yīng)使用Application.CutCopyMode = False語句恢復(fù)

18、該屬性的默認(rèn)設(shè)置。示例01-06:禁止彈出警告信息(DisplayAlerts屬性)Sub testAlertsDisplay() Application.DisplayAlerts = FalseEnd Sub示例說明:在程序運行過程中,有時由于Excel本身設(shè)置的原因,會彈出對話框,從而中斷程序的運行,您可以在程序之前加上Application.DisplayAlerts = False語句以禁止彈出這些對話框而不影響程序正常運行。需要注意的是,在程序運行結(jié)束前,應(yīng)使DisplayAlerts屬性恢復(fù)為缺省狀態(tài),即使用語句Application.DisplayAlerts = True。該

19、屬性的默認(rèn)設(shè)置為True,當(dāng)將該屬性設(shè)置為False時,Excel會使直接使用對話框中默認(rèn)的選擇,從而不會因為彈出對話框而影響程序運行。示例01-07:將Excel全屏幕顯示Sub testFullScreen() MsgBox 運行后將Excel的顯示模式設(shè)置為全屏幕 Application.DisplayFullScreen = True MsgBox 恢復(fù)為原來的狀態(tài) Application.DisplayFullScreen = FalseEnd Sub示例01-08:Excel啟動的文件夾路徑Sub ExcelStartfolder() MsgBox Excel啟動的文件夾路徑為:

20、& Chr(10) & Application.StartupPathEnd Sub示例01-09:打開最近使用過的文檔Sub OpenRecentFiles() MsgBox 顯示最近使用過的第三個文件名,并打開該文件 MsgBox 最近使用的第三個文件的名稱為: & Application.RecentFiles(3).Name Application.RecentFiles(3).OpenEnd Sub示例01-10:打開文件(FindFile方法)Sub FindFileOpen() On Error Resume Next MsgBox 請打開文件, vbOKOnly + vbInf

21、ormation, 打開文件 If Not Application.FindFile Then MsgBox 文件未找到, vbOKOnly + vbInformation, 打開失敗 End IfEnd Sub示例說明:本示例將顯示“打開”文件對話框,若用戶未打開文件(即點擊“取消”按鈕),則會顯示“打開失敗”信息框。示例中使用了FindFile方法,用來顯示“打開”對話框并讓用戶打開一個文件。如果成功打開一個新文件,則該值為True。如果用戶取消了操作并退出該對話框,則該值為False。示例01-11:文件對話框操作(FileDialog屬性)Sub UseFileDialogOpen()

22、 Dim lngCount As Long 開啟打開文件對話框 With Application.FileDialog(msoFileDialogOpen) .AllowMultiSelect = True .Show 顯示所選的每個文件的路徑 For lngCount = 1 To .SelectedItems.Count MsgBox .SelectedItems(lngCount) Next lngCount End WithEnd Sub示例說明:本示例顯示“打開文件”對話框,當(dāng)用戶在其中選擇一個或多個文件后,將依次顯示每個文件的路徑。其中,F(xiàn)ileDialog屬性返回打開和保存對話框

23、中一系列對象的集合,您可以對該集合對象的屬性進行進一步的設(shè)置,如上例中的AllowMultiSelect屬性設(shè)置為True將允許用戶選擇多個文件。示例01-12:保存Excel的工作環(huán)境Sub 保存Excel的工作環(huán)境() MsgBox 將Excel的工作環(huán)境保存到D:ExcelSample中 Application.SaveWorkspace D:ExcelSampleSampleEnd Sub示例說明:運行本程序后,將工作簿以帶后綴名.xlw保存到D盤的ExcelSample文件夾中,生成的文件全名為Sample.xlw。當(dāng)改變工作簿并保存時,Excel會詢問是覆蓋原文件還是保存副本。示例

24、01-13:改變Excel工作簿名字(Caption屬性)Sub SetCaption() Application.Caption = My ExcelBookEnd Sub示例說明:運行本程序后,將工作簿左上角Excel圖標(biāo)右側(cè)的“Microsoft Excel”改為“My ExcelBook”。示例01-14:使用InputBox方法Sub SampleInputBox() Dim vInput vInput = InputBox(請輸入用戶名:, 獲取用戶名, Application.UserName) MsgBox 您好! & vInput & .很高興能認(rèn)識您., vbOKOnly,

25、 打招呼End Sub示例01-15:設(shè)置頁邊距(CentimetersToPoints方法)Sub SetLeftMargin() MsgBox 將工作表Sheet1的左頁邊距設(shè)為5厘米 Worksheets(Sheet1).PageSetup.LeftMargin = Application.CentimetersToPoints(5)End Sub示例01-16:使用Windows的計算器(ActivateMicrosoftApp方法)Sub CallCalculate() Application.ActivateMicrosoftApp Index:=0End Sub示例說明:運行本程

26、序后,將調(diào)用Windows的計算器。示例01-17:在程序中運行另一個宏(Run方法)Sub runOtherMacro() MsgBox 本程序先選擇A1至C6單元格區(qū)域后執(zhí)行DrawLine宏 ActiveSheet.Range(A2:C6).Select Application.Run DrawLineEnd Sub示例01-18:在指定的時間執(zhí)行宏(OnTime方法)Sub AfterTimetoRun() MsgBox 從現(xiàn)在開始,10秒后執(zhí)行程序testFullScreen Application.OnTime Now + TimeValue(00:00:10), testFull

27、ScreenEnd Sub示例說明:運行本程序后,在10秒后將執(zhí)行程序testFullScreen。示例01-19:暫時停止宏運行(Wait方法)Sub Stop5sMacroRun() Dim SetTime As Date MsgBox 按下確定,5秒后執(zhí)行程序testFullScreen SetTime = DateAdd(s, 5, Now() Application.Wait SetTime Call testFullScreenEnd Sub示例說明:運行本程序后,按下彈出的提示框中的“確定”按鈕,等待5秒后執(zhí)行另一程序testFullScreen。示例01-20:按下指定的按鍵后

28、執(zhí)行程序(OnKey方法)示例01-20-1Sub PressKeytoRun() MsgBox 按下Ctrl+D后將執(zhí)行程序testFullScreen Application.OnKey d, testFullScreenEnd Sub示例01-20-2Sub ResetKey() MsgBox 恢復(fù)原來的按鍵狀態(tài) Application.OnKey dEnd Sub示例說明:Onkey方法的作用主要是指定特定的鍵,當(dāng)按下指定的鍵時運行相應(yīng)的宏程序,或者按下指定的鍵時,使Excel屏蔽特定的功能。示例01-21:重新計算工作簿示例01-21-1Sub CalculateAllWorkboo

29、k() Application.CalculateEnd Sub示例說明:當(dāng)工作簿的計算模式被設(shè)置為手動模式后,運用Calculate方法可以重新計算所有打開的工作簿、工作簿中特定的工作表或者工作表中指定的單元格區(qū)域。示例01-21-2Sub CalculateFullSample() If Application.CalculationVersion Workbooks(1).CalculationVersion Then Application.CalculateFull End IfEnd Sub示例說明:本示例先將當(dāng)前Microsoft Excel的版本與上次計算該工作簿的Excel版

30、本進行比較,如果兩個版本不同,則對所有打開工作簿中的數(shù)據(jù)進行一次完整計算。其中,CalculationVersion屬性返回工作簿的版本信息。示例01-22:控制函數(shù)重新計算(Volatile方法)Function NonStaticRand() 當(dāng)工作表中任意單元格重新計算時本函數(shù)更新 Application.Volatile True NonStaticRand = Rnd()End Function示例說明:本示例摸仿Excel中的Rand()函數(shù),當(dāng)工作表單元格發(fā)生變化時,都會重新計算該函數(shù)。在例子中,使用了Volatile方法,強制函數(shù)進行重新計算,即無論何時重新計算工作表,該函數(shù)都

31、會重新計算。示例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 Sub示例說明:本示例獲取工作表Sheet1中單元格區(qū)域A1:C10中的最小值,使用了工作表函數(shù)Min()。一般,使用WorksheetFunction屬性引用工作表

32、函數(shù),但如果VBA自帶有實現(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), Range(rg2) If rSect Is Nothing Then MsgBox 沒有交叉區(qū)域 Else rSect.Select End IfEnd Sub示例說明:本示例在工作表Sheet1中選定兩個命名區(qū)域rg1和rg2的重疊區(qū)域

33、,如果所選區(qū)域不重疊,則顯示一條相應(yīng)的信息。其中,Intersect方法返回一個Range對象,代表兩個或多個范圍重疊的矩形區(qū)域。示例01-25:獲取路徑分隔符(PathSeparator屬性)Sub GetPathSeparator()MsgBox 路徑分隔符為 & Application.PathSeparatorEnd Sub示例說明:本示例使用PathSeparator屬性返回路徑分隔符(“”)。示例01-26:快速移至指定位置(Goto方法)Sub GotoSample() Application.Goto Reference:=Worksheets(Sheet1).Range(A1

34、54), _ scroll:=TrueEnd Sub示例說明:本示例運行后,將當(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示例說明

35、:本示例使用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示例說明:運行本程序后,若該工作簿未保存,則會彈出對話框詢問是否保存。 =(by fanjy)第二章 窗口(Window對象)基本操作應(yīng)用示例(一)分類:ExcelVBAExcelVBA編程入門范例Window對象代表一個窗口,約有48個屬性和14個方法

36、,能對窗口特性進行設(shè)置和操作。Window對象是Windows集合中的成員,對于Application對象來說,Windows集合包含該應(yīng)用程序中的所有窗口;對于Workbook對象來說,Windows集合只包含指定工作簿中的窗口。下面介紹一些示例,以演示和說明Window對象及其屬性和方法的運用。示例02-01:激活窗口(Activate方法)Sub SelectWindow() Dim iWin As Long, i As Long, bWin MsgBox 依次切換已打開的窗口 iWin = Windows.Count MsgBox “您已打開的窗口數(shù)量為:” & iWin For i

37、= 1 To iWin Windows(i).Activate bWin = MsgBox(您激活了第 & i & 個窗口,還要繼續(xù)嗎?, vbYesNo) If bWin = vbNo Then Exit Sub Next iEnd Sub示例02-02:窗口狀態(tài)(WindowState屬性)示例02-02-01Sub WindowStateTest() MsgBox 當(dāng)前活動工作簿窗口將最小化 Windows(1).WindowState = xlMinimized MsgBox 當(dāng)前活動工作簿窗口將恢復(fù)正常 Windows(1).WindowState = xlNormal MsgBox

38、 當(dāng)前活動工作簿窗口將最大化 Windows(1).WindowState = xlMaximizedEnd Sub示例說明:使用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)用程序窗口將最大化 Applicatio

39、n.WindowState = xlMaximized Call testWindowState MsgBox 應(yīng)用程序窗口將恢復(fù)正常 Application.WindowState = xlNormal MsgBox 應(yīng)用程序窗口已恢復(fù)正常 測試活動工作簿窗口狀態(tài) MsgBox 當(dāng)前活動工作簿窗口將最小化 ActiveWindow.WindowState = xlMinimized Call testWindowState MsgBox 當(dāng)前活動工作簿窗口將最大化 ActiveWindow.WindowState = xlMaximized Call testWindowState MsgB

40、ox 當(dāng)前活動工作簿窗口將恢復(fù)正常 ActiveWindow.WindowState = xlNormal Call testWindowState MsgBox 應(yīng)用程序窗口將最小化 Application.WindowState = xlMinimized Call testWindowStateEnd Sub*Sub testWindowState() Select Case Application.WindowState Case xlMaximized: MsgBox 應(yīng)用程序窗口已最大化 Case xlMinimized: MsgBox 應(yīng)用程序窗口已最小化 Case xlNorm

41、al: Select Case ActiveWindow.WindowState Case xlMaximized: MsgBox 當(dāng)前活動工作簿窗口已最大化 Case xlMinimized: MsgBox 當(dāng)前活動工作簿窗口已最小化 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鍵逐語句

42、運行testWindow()程序,觀察Excel應(yīng)用程序及工作簿窗口的不同狀態(tài)。此外,在子程序中,還運用了嵌套的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 For x = 50 To Application.UsableHeight .Height = x Next x For x = 50 To Application.UsableWidt

43、h .Width = x Next x .WindowState = xlMaximized End WithEnd Sub示例說明:本示例將動態(tài)演示工作簿窗口由小到大直至最大化的變化過程。在運行程序時,您可以將VBE窗口縮小,從而在工作簿中查看動態(tài)效果,也可以在Excel中選擇菜單中的宏命令執(zhí)行以查看效果。示例02-03:切換顯示工作表元素示例02-03-01Sub testDisplayHeading() MsgBox “切換顯示/隱藏行列標(biāo)號” ActiveWindow.DisplayHeadings = Not ActiveWindow.DisplayHeadingsEnd Sub示例

44、說明:本示例切換是否顯示工作表中的行列標(biāo)號。運行后,工作表中的行標(biāo)號和列標(biāo)號將消失;再次運行后,行列標(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)格線。

45、運行后,工作表中的網(wǎng)格線消失,再次運行后,網(wǎng)格線重新出現(xiàn),如此反復(fù)。您也可以將該屬性設(shè)置為False,以取消網(wǎng)格線顯示,如ActiveWindow.DisplayGridlines = False;而將該屬性設(shè)置為True,則顯示網(wǎng)格線。示例02-03-03Sub DisplayHorizontalScrollBar() MsgBox “切換顯示/隱藏水平滾動條” ActiveWindow.DisplayHorizontalScrollBar = _ Not ActiveWindow.DisplayHorizontalScrollBarEnd Sub示例說明:本示例切換是否顯示工作表中的水平滾

46、動條。運行后,工作表中的水平滾動條消失,再次運行后,水平滾動條重新出現(xiàn),如此反復(fù)。您也可以將該屬性設(shè)置為False,以取消水平滾動條,如ActiveWindow.DisplayHorizontalScrollBar = False;而將該屬性設(shè)置為True,則顯示水平滾動條。同理,DisplayVerticalScrollBar屬性將用來設(shè)置垂直滾動條。示例02-03-04Sub DisplayScrollBar() MsgBox 切換顯示/隱藏水平和垂直滾動條 Application.DisplayScrollBars = Not (Application.DisplayScrollBars

47、)End Sub示例說明:本示例切換是否顯示工作表中的水平和垂直滾動條。運行后,工作表中的水平和垂直滾動條同時消失,再次運行后,水平和垂直滾動條重新出現(xiàn),如此反復(fù)。您也可以將該屬性設(shè)置為False,以取消水平和垂直滾動條顯示,如Application.DisplayScrollBars= False;而將該屬性設(shè)置為True,則顯示水平和垂直滾動條。示例02-04:顯示公式(DisplayFormulas屬性)Sub DisplayFormula() MsgBox “顯示工作表中包含公式的單元格中的公式” ActiveWindow.DisplayFormulas = TrueEnd Sub示例

48、說明:本程序運行后,工作表中含有公式的單元格將顯示公式而不是數(shù)值。若要顯示數(shù)值,則將該屬性設(shè)置為False,或者,如果工作表中的公式顯示的是結(jié)果數(shù)值,則該屬性為False。示例02-05:顯示/隱藏工作表標(biāo)簽(DisplayWorkbookTabs屬性)Sub testDisplayWorkbookTab() MsgBox “隱藏工作表標(biāo)簽” ActiveWindow.DisplayWorkbookTabs = FalseEnd Sub示例說明:本程序運行后,工作表標(biāo)簽消失。將該屬性設(shè)置為True,重新顯示工作表標(biāo)簽。示例02-06:命名活動窗口(Caption屬性)Sub testCapti

49、on() MsgBox 當(dāng)前活動工作簿窗口的名字是: & ActiveWindow.Caption ActiveWorkbook.Windows(1).Caption = 我的工作簿 MsgBox 當(dāng)前活動工作簿窗口的名字是: & ActiveWindow.CaptionEnd Sub示例說明:本程序運行后,顯示當(dāng)前活動工作簿窗口原先的名稱(即工作簿窗口未處于最大化狀態(tài)時,出現(xiàn)在窗口頂部標(biāo)題欄中的文字),然后設(shè)置當(dāng)前活動工作簿窗口名稱,即使用語句ActiveWorkbook.Windows(1).Caption = 我的工作簿,最后顯示當(dāng)前活動工作簿窗口的新名稱。改變窗口的標(biāo)題并不會改變工作簿

50、的名稱。示例02-07:移動窗口到指定位置(ScrollRow屬性和ScrollColumn屬性)Sub testScroll() MsgBox “將當(dāng)前窗口工作表左上角單元格移至第10行第3列” ActiveWindow.ScrollRow = 10 ActiveWindow.ScrollColumn = 3End Sub示例說明:本程序運行后,當(dāng)前活動窗口左上角單元格為第10行第3列。可以通過設(shè)置這兩個屬性來移動窗口到指定的位置,也可以返回指定窗格或窗口最左上面的行號或列號。示例02-08:調(diào)整窗口(EnableResize屬性)Sub testResize() MsgBox “設(shè)置窗口大

51、小不可調(diào)整” ActiveWindow.EnableResize = FalseEnd Sub示例說明:測試本程序前,將當(dāng)前工作簿窗口恢復(fù)為正常狀態(tài)(即讓工作簿標(biāo)題可見),運行程序后,當(dāng)前工作簿窗口將不能調(diào)整其大小,右上角的最小化最大化按鈕將消失(即隱藏最大化和最小化按鈕)。該屬性設(shè)置為True,則能調(diào)整窗口大小。示例02-09:拆分窗格示例02-09-01Sub SplitWindow1() Dim iRow As Long, iColumn As Long MsgBox 以活動單元格為基準(zhǔn)拆分窗格 iRow = ActiveCell.Row iColumn = ActiveCell.Col

52、umn With ActiveWindow .SplitColumn = iColumn .SplitRow = iRow 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 .Spli

53、tRow = iRow End With MsgBox 恢復(fù)原來的窗口狀態(tài) ActiveWindow.SplitColumn = 0 ActiveWindow.SplitRow = 0End Sub示例說明:本示例演示了以活動單元格為基準(zhǔn)拆分窗格。如果指定窗口被拆分,則Split屬性的值為True;設(shè)置該屬性的值為False則取消窗格拆分。也可以設(shè)置SplitColumn屬性和SplitRow屬性的值來取消窗格拆分。示例02-10:凍結(jié)窗格(FreezePanes屬性)Sub testFreezePane() MsgBox “凍結(jié)窗格” ActiveWindow.FreezePanes = TrueEnd Sub示例說明:運行本程序后,將會凍結(jié)活動單元格所在位置上方和左側(cè)的單元格區(qū)域。將該屬性的值設(shè)置為False,將取消凍結(jié)窗格。示例02-11:設(shè)置網(wǎng)格線顏色(GridlineColor屬性和GridlineColorIndex屬性)Sub setGridlineColor() Dim iColor As Long iColor=ActiveWindow.GridlineColor MsgBox 將活動窗口的網(wǎng)格線顏色設(shè)為紅色 ActiveWindow.GridlineColor = RGB(255, 0, 0)

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論