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

下載本文檔

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

文檔簡(jiǎn)介

1、ExcelVBA編程實(shí)例(150例)主要內(nèi)容和特點(diǎn)ExcelVBA編程入門范例主要是以一些基礎(chǔ)而簡(jiǎn)短的VBA實(shí)例來(lái)對(duì)ExcelVBA中的常用對(duì)象及其屬性和方法進(jìn)行講解,包括應(yīng)用程序?qū)ο蟆⒋翱?、工作簿、工作表、單元格和單元格區(qū)域、圖表、數(shù)據(jù)透視表、形狀、控件、菜單和工具欄、幫助助手、格式化操作、文件操作、以及常用方法和函數(shù)及技巧等方面的應(yīng)用示例。這些例子都比較基礎(chǔ),很容易理解,因而,很容易調(diào)試并得以實(shí)現(xiàn),讓您通過(guò)具體的實(shí)例來(lái)熟悉ExcelVBA編程。 分16章共14個(gè)專題,以具體實(shí)例來(lái)對(duì)大多數(shù)常用的ExcelVBA對(duì)象進(jìn)行講解; 一般而言,每個(gè)實(shí)例都很簡(jiǎn)短,用來(lái)說(shuō)明使用VBA實(shí)現(xiàn)Excel某一功

2、能的操作; 各章內(nèi)容主要是實(shí)例,即VBA代碼,配以簡(jiǎn)短的說(shuō)明,有些例子可能配以必要的圖片,以便于理解; 您可以對(duì)這些實(shí)例進(jìn)行擴(kuò)充或組合,以實(shí)現(xiàn)您想要的功能或更復(fù)雜的操作。VBE編輯器及VBA代碼輸入和調(diào)試的基本知識(shí)在學(xué)習(xí)這些實(shí)例的過(guò)程中,最好自已動(dòng)手將它們輸入到VBE編輯器中調(diào)試運(yùn)行,來(lái)查看它們的結(jié)果。當(dāng)然,您可以偷賴,將它們復(fù)制/粘貼到代碼編輯窗口后,進(jìn)行調(diào)試運(yùn)行。下面,對(duì)VBE編輯器界面進(jìn)行介紹,并對(duì)VBA代碼輸入和調(diào)試的基本知識(shí)進(jìn)行簡(jiǎn)單的講解。激活VBE編輯器一般可以使用以下三種方式來(lái)打開(kāi)VBE編輯器: 使用工作表菜單“工具宏Visual Basic編輯器”命令,如圖00-01所示; 在

3、Visual Basic工具欄上,按“Visual Basic編輯器”按鈕,如圖00-02所示; 按Alt+F11組合鍵。圖00-01:選擇菜單“工具宏Visual Basic編輯器”命令來(lái)打開(kāi)VBE編輯器圖00-02:選擇Visual Basic工具欄上的“Visual Basic編輯器”命令按鈕來(lái)打開(kāi)VBE編輯器此外,您也可以使用下面三種方式打開(kāi)VBE編輯器: 在任一工作表標(biāo)簽上單擊鼠標(biāo)右鍵,在彈出的菜單中選擇“查看代碼”,則可進(jìn)入VBE編輯器訪問(wèn)該工作表的代碼模塊,如圖00-03所示; 在工作簿窗口左上角的Excel圖標(biāo)上單擊鼠標(biāo)右鍵,在彈出的菜單中選擇“查看代碼”,則可進(jìn)入VBE編輯器

4、訪問(wèn)活動(dòng)工作簿的ThisWorkbook代碼模塊,如圖00-04所示; 選擇菜單“工具宏宏”命令打開(kāi)宏對(duì)話框,若該工作簿中有宏程序,則單擊該對(duì)話框中的“編輯”按鈕即可進(jìn)行VBE編輯器代碼模塊,如圖00-05所示。圖00-03:右擊工作表標(biāo)簽彈出菜單并選擇“查看代碼”打開(kāi)VBE編輯器圖00-04:右擊Excel圖標(biāo)彈出菜單并選擇“查看代碼”打開(kāi)VBE編輯器圖00-05:在宏對(duì)話框中單擊“編輯”按鈕打開(kāi)VBE編輯器VBE編輯器窗口簡(jiǎn)介剛打開(kāi)VBE編輯器時(shí),所顯示的窗口如圖00-06所示,其中沒(méi)有代碼模塊窗口。圖00-06:剛打開(kāi)VBE編輯器時(shí)的窗口可以在“工程資源管理器”中雙擊任一對(duì)象打開(kāi)代碼窗口

5、,或者選擇菜單“插入模塊”或“插入類模塊”來(lái)打開(kāi)代碼窗口。一般VBE編輯器窗口及各組成部件名稱如圖00-07所示,可以通過(guò)“視圖”菜單中的菜單項(xiàng)選擇所出現(xiàn)的窗口。同時(shí),可以在“工程屬性”窗口中設(shè)置或修改相應(yīng)對(duì)象的屬性。圖00-07:VBE編輯器窗口下面是帶有用戶窗體的VBE編輯器窗口,如圖00-08所示。選擇VBE菜單“插入用戶窗體”,即可插入一個(gè)用戶窗體。當(dāng)插入用戶窗體后,在“工程資源管理器”窗口中會(huì)出現(xiàn)一個(gè)用戶窗體對(duì)象,“工程屬性”窗口顯示當(dāng)前用戶窗體的屬性,可對(duì)相關(guān)屬性進(jìn)行設(shè)置或修改。同時(shí),在用戶窗體上用鼠標(biāo)單擊,會(huì)出現(xiàn)“控件工具箱”。在“工程資源管理器”窗口雙擊用戶窗體圖標(biāo),會(huì)出現(xiàn)相應(yīng)

6、的用戶窗體;在用戶窗體圖標(biāo)或者是在用戶窗體上單擊鼠標(biāo)右鍵,然后在彈出的菜單中選擇“查看代碼”,則會(huì)出現(xiàn)用戶窗體代碼窗口。圖00-08:VBE編輯器窗口(帶有用戶窗體)在VBE編輯器中輸入VBA代碼如前所述,您可以選擇VBE菜單“插入用戶窗體/模塊/類模塊”來(lái)插入模塊或用戶窗體以及相應(yīng)的代碼窗口。此外,您也可以在“工程資源管理器”中單擊鼠標(biāo)右鍵,從彈出的菜單中選擇“插入用戶窗體/模塊/類模塊”來(lái)實(shí)現(xiàn)上面的操作。在獲取相應(yīng)的代碼模塊窗口后,就可以輸入VBA代碼了。在VBE編輯器的代碼模塊中輸入VBA代碼,通常有以下幾種方法: 手工鍵盤輸入; 使用宏錄制器,即選擇菜單“工具宏錄制新宏”命令,將所進(jìn)行

7、的操作自動(dòng)錄制成宏代碼; 復(fù)制/粘貼代碼,即將現(xiàn)有的代碼復(fù)制后,粘貼到相應(yīng)的代碼模塊中; 導(dǎo)入代碼模塊,即在VBE編輯器中選擇菜單“文件導(dǎo)入文件”或在“工程資源管理器”的任一對(duì)象上右擊鼠標(biāo)選擇菜單“導(dǎo)入文件”,選擇相應(yīng)的代碼文件導(dǎo)入。如果不想要某個(gè)模塊了,可以選擇菜單“文件移除模塊”,也可以在相應(yīng)的模塊上單擊鼠標(biāo)右鍵,從彈出的菜單中選擇“移除模塊”。此時(shí),會(huì)彈出一個(gè)警告框,詢問(wèn)在移除模塊前是否將其導(dǎo)出,可以根據(jù)需要進(jìn)行選擇。也可以選擇菜單“文件導(dǎo)出文件”或在相應(yīng)的模塊上單擊鼠標(biāo)右鍵后,從彈出的菜單中選擇“導(dǎo)出文件”,將移除的模塊保存在相應(yīng)的文件夾中。這樣,以后可以對(duì)其進(jìn)行導(dǎo)入,從而加以利用。調(diào)

8、試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)試時(shí),常用到的有以下幾個(gè): 逐語(yǔ)句??梢园碏8鍵對(duì)代碼按順序一條一條語(yǔ)句運(yùn)行,從而找出語(yǔ)句或邏輯錯(cuò)誤。 設(shè)置斷點(diǎn)。在可能存在問(wèn)題的語(yǔ)句處設(shè)置斷點(diǎn)(可通過(guò)在相應(yīng)代碼前的空白部位單擊,將會(huì)出現(xiàn)一個(gè)深紅色的橢圓即斷點(diǎn)),當(dāng)程序運(yùn)行至斷點(diǎn)處時(shí),會(huì)中止運(yùn)行。 在語(yǔ)句的適當(dāng)部位設(shè)置Debug.Print語(yǔ)句,運(yùn)行后其結(jié)果會(huì)顯示在“立即窗口”中,可以此測(cè)試或跟蹤變量的值。 在“立即窗口”中測(cè)試。對(duì)值的測(cè)試或跟蹤,也可以以“?”開(kāi)頭,在“立即窗口”中輸入需要測(cè)試值

9、的語(yǔ)句,按Enter回車鍵后將立即出現(xiàn)結(jié)果;對(duì)執(zhí)行語(yǔ)句的測(cè)試,可直接在“立即窗口”中輸入,按Enter回車鍵后將執(zhí)行。 可以按F5鍵直接運(yùn)行光標(biāo)所在位置的子程序。在執(zhí)行程序后,必須在Excel工作表中查看所得到的結(jié)果。可以用鼠標(biāo)單擊VBE編輯器左上角的Excel圖標(biāo)或者是按Alt+F11組合鍵切換到Excel界面。(當(dāng)然,對(duì)程序代碼的調(diào)試有很多方法和技巧,留待以后對(duì)VBA進(jìn)一步研究和理解更透徹后一并討論。)利用VBA幫助系統(tǒng)如果遇到疑問(wèn)或錯(cuò)誤,可以利用Excel自帶的VBA幫助系統(tǒng)。 可以在如圖00-09所示的部位輸入需要幫助的關(guān)鍵詞,按Enter回車鍵后將會(huì)出現(xiàn)相關(guān)主題。用鼠標(biāo)單擊相應(yīng)的主題

10、即會(huì)出現(xiàn)詳細(xì)的幫助信息。 圖00-09:幫助搜索窗口 可以按F2鍵,調(diào)出“對(duì)象瀏覽器”窗口(如圖00-10所示),在搜索文本框中輸入需要幫助的關(guān)鍵詞,將會(huì)在“搜索結(jié)果”中出現(xiàn)一系列相關(guān)的對(duì)象及方法、屬性列表,單擊相應(yīng)的對(duì)象則會(huì)在“類”和“成員”列表框中顯示相應(yīng)的對(duì)象和方法、屬性成員列表,在成員列表中相應(yīng)的項(xiàng)目上按F1鍵即會(huì)出現(xiàn)詳細(xì)的幫助信息。(“對(duì)象瀏覽器”是一個(gè)很好的幫助工具,值得好好研究) 圖00-10:對(duì)象瀏覽器窗口參考資料ExcelVBA編程入門范例參考或引用了以下書籍和資料:(1)Excel 2003高級(jí)VBA編程寶典(2)Excel 2003與VBA編程從入門到精通(中文版)(3)

11、巧學(xué)巧用Excel 2003 VBA與宏(中文版)(4)ExcelVBA應(yīng)用程序?qū)I(yè)設(shè)計(jì)實(shí)用指南(5)ExcelVBA應(yīng)用開(kāi)發(fā)與實(shí)例精講(6)一些網(wǎng)上資源更多的信息關(guān)于ExcelVBA的更多參考和學(xué)習(xí)資源,可以在上查找,有疑問(wèn)也可以在ExcelHome論壇中提問(wèn)。您也可以登錄我的博客,上面有很多Excel的學(xué)習(xí)資料。同時(shí),歡迎與我聯(lián)系交流,我的e-mail是:。 “學(xué)習(xí)Excel,使用VBA對(duì)Excel進(jìn)行控制操作是我很熱衷的業(yè)余愛(ài)好之一。”fanjy Excel應(yīng)用程序

12、對(duì)象(Application對(duì)象)及其常用方法基本操作應(yīng)用示例分類:ExcelVBAExcelVBA編程入門范例Application對(duì)象代表整個(gè)Microsoft Excel應(yīng)用程序,帶有175個(gè)屬性和52個(gè)方法,可以設(shè)置整個(gè)應(yīng)用程序的環(huán)境或配置應(yīng)用程序。示例01-01:體驗(yàn)開(kāi)/關(guān)屏幕更新(ScreenUpdating屬性)Sub 關(guān)閉屏幕更新() MsgBox 順序切換工作表Sheet1Sheet2Sheet3Sheet2,先開(kāi)啟屏幕更新,然后關(guān)閉屏幕更新 Worksheets(1).Select MsgBox 目前屏幕中顯示工作表Sheet1 Application.ScreenUpda

13、ting = True Worksheets(2).Select MsgBox 顯示Sheet2了嗎? Worksheets(3).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).

14、Select MsgBox 顯示Sheet3了嗎? Worksheets(2).Select Application.ScreenUpdating = TrueEnd Sub示例說(shuō)明:ScreenUpdating屬性用來(lái)控制屏幕更新。當(dāng)運(yùn)行一個(gè)宏程序處理涉及到多個(gè)工作表或單元格中的大量數(shù)據(jù)時(shí),若沒(méi)有關(guān)閉屏幕更新,則會(huì)占用CPU的處理時(shí)間,從而降低程序的運(yùn)行速度,而關(guān)閉該屬性則可顯著提高程序運(yùn)行速度。示例01-02:使用狀態(tài)欄(StatusBar屬性)Sub testStatusBar() Application.DisplayStatusBar = True 開(kāi)啟狀態(tài)欄顯示 賦值狀態(tài)欄顯示的文

15、本 Application.StatusBar = End Sub示例說(shuō)明:StatusBar屬性用來(lái)指定顯示在狀態(tài)欄上的信息。若不想再顯示狀態(tài)欄文本,可使用Application.StatusBar = False語(yǔ)句關(guān)閉狀態(tài)欄顯示,也可以在程序開(kāi)始將原先的狀態(tài)欄設(shè)置存儲(chǔ),如使用語(yǔ)句oldStatusBar = Application.DisplayStatusBar將狀態(tài)欄原來(lái)的信息存儲(chǔ)在變量oldStatusBar,在程序運(yùn)行完成或退出時(shí),將變量重新賦值給狀態(tài)欄,如使用語(yǔ)句Application.DisplayStatusBar

16、 = 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 MsgBox 您將使用等待形光標(biāo),切換到Excel界面查看光標(biāo)形狀 Application.Cursor = xlDefault MsgBox 您已

17、將光標(biāo)恢復(fù)為缺省狀態(tài)End Sub示例01-04:獲取系統(tǒng)信息Sub GetSystemInfo() MsgBox Excel版本信息為: & 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 本機(jī)操作系統(tǒng)的名稱和版本為: & Application.OperatingSystem

18、MsgBox 本產(chǎn)品所登記的組織名為: & Application.OrganizationName MsgBox 當(dāng)前用戶名為: & Application.UserName MsgBox 當(dāng)前使用的Excel版本為: & Application.VersionEnd Sub示例說(shuō)明:可以使用給UserName屬性賦值以設(shè)置用戶名稱。示例01-05:退出復(fù)制/剪切模式(CutCopyMode屬性)Sub exitCutCopyMode() Application.CutCopyMode = FalseEnd Sub示例說(shuō)明:退出復(fù)制/剪切模式后,在程序運(yùn)行時(shí)所進(jìn)行的復(fù)制或剪切操作不會(huì)在原單元

19、格區(qū)域留下流動(dòng)的虛框線。需要提醒的是,在程序運(yùn)行完后,應(yīng)使用Application.CutCopyMode = False語(yǔ)句恢復(fù)該屬性的默認(rèn)設(shè)置。示例01-06:禁止彈出警告信息(DisplayAlerts屬性)Sub testAlertsDisplay() Application.DisplayAlerts = FalseEnd Sub示例說(shuō)明:在程序運(yùn)行過(guò)程中,有時(shí)由于Excel本身設(shè)置的原因,會(huì)彈出對(duì)話框,從而中斷程序的運(yùn)行,您可以在程序之前加上Application.DisplayAlerts = False語(yǔ)句以禁止彈出這些對(duì)話框而不影響程序正常運(yùn)行。需要注意的是,在程序運(yùn)行結(jié)束前

20、,應(yīng)使DisplayAlerts屬性恢復(fù)為缺省狀態(tài),即使用語(yǔ)句Application.DisplayAlerts = True。該屬性的默認(rèn)設(shè)置為True,當(dāng)將該屬性設(shè)置為False時(shí),Excel會(huì)使直接使用對(duì)話框中默認(rèn)的選擇,從而不會(huì)因?yàn)閺棾鰧?duì)話框而影響程序運(yùn)行。示例01-07:將Excel全屏幕顯示Sub testFullScreen() MsgBox 運(yùn)行后將Excel的顯示模式設(shè)置為全屏幕 Application.DisplayFullScreen = True MsgBox 恢復(fù)為原來(lái)的狀態(tài) Application.DisplayFullScreen = FalseEnd Sub示例

21、01-08:Excel啟動(dòng)的文件夾路徑Sub ExcelStartfolder() MsgBox Excel啟動(dòng)的文件夾路徑為: & Chr(10) & Application.StartupPathEnd Sub示例01-09:打開(kāi)最近使用過(guò)的文檔Sub OpenRecentFiles() MsgBox 顯示最近使用過(guò)的第三個(gè)文件名,并打開(kāi)該文件 MsgBox 最近使用的第三個(gè)文件的名稱為: & Application.RecentFiles(3).Name Application.RecentFiles(3).OpenEnd Sub示例01-10:打開(kāi)文件(FindFile方法)Sub F

22、indFileOpen() On Error Resume Next MsgBox 請(qǐng)打開(kāi)文件, vbOKOnly + vbInformation, 打開(kāi)文件 If Not Application.FindFile Then MsgBox 文件未找到, vbOKOnly + vbInformation, 打開(kāi)失敗 End IfEnd Sub示例說(shuō)明:本示例將顯示“打開(kāi)”文件對(duì)話框,若用戶未打開(kāi)文件(即點(diǎn)擊“取消”按鈕),則會(huì)顯示“打開(kāi)失敗”信息框。示例中使用了FindFile方法,用來(lái)顯示“打開(kāi)”對(duì)話框并讓用戶打開(kāi)一個(gè)文件。如果成功打開(kāi)一個(gè)新文件,則該值為True。如果用戶取消了操作并退出該對(duì)

23、話框,則該值為False。示例01-11:文件對(duì)話框操作(FileDialog屬性)Sub UseFileDialogOpen() Dim lngCount As Long 開(kāi)啟打開(kāi)文件對(duì)話框 With Application.FileDialog(msoFileDialogOpen) .AllowMultiSelect = True .Show 顯示所選的每個(gè)文件的路徑 For lngCount = 1 To .SelectedItems.Count MsgBox .SelectedItems(lngCount) Next lngCount End WithEnd Sub示例說(shuō)明:本示例顯示

24、“打開(kāi)文件”對(duì)話框,當(dāng)用戶在其中選擇一個(gè)或多個(gè)文件后,將依次顯示每個(gè)文件的路徑。其中,F(xiàn)ileDialog屬性返回打開(kāi)和保存對(duì)話框中一系列對(duì)象的集合,您可以對(duì)該集合對(duì)象的屬性進(jìn)行進(jìn)一步的設(shè)置,如上例中的AllowMultiSelect屬性設(shè)置為True將允許用戶選擇多個(gè)文件。示例01-12:保存Excel的工作環(huán)境Sub 保存Excel的工作環(huán)境() MsgBox 將Excel的工作環(huán)境保存到D:ExcelSample中 Application.SaveWorkspace D:ExcelSampleSampleEnd Sub示例說(shuō)明:運(yùn)行本程序后,將工作簿以帶后綴名.xlw保存到D盤的Exce

25、lSample文件夾中,生成的文件全名為Sample.xlw。當(dāng)改變工作簿并保存時(shí),Excel會(huì)詢問(wèn)是覆蓋原文件還是保存副本。示例01-13:改變Excel工作簿名字(Caption屬性)Sub SetCaption() Application.Caption = My ExcelBookEnd Sub示例說(shuō)明:運(yùn)行本程序后,將工作簿左上角Excel圖標(biāo)右側(cè)的“Microsoft Excel”改為“My ExcelBook”。示例01-14:使用InputBox方法Sub SampleInputBox() Dim vInput vInput = InputBox(請(qǐng)輸入用戶名:, 獲取用戶名,

26、 Application.UserName) MsgBox 您好! & vInput & .很高興能認(rèn)識(shí)您., vbOKOnly, 打招呼End Sub示例01-15:設(shè)置頁(yè)邊距(CentimetersToPoints方法)Sub SetLeftMargin() MsgBox 將工作表Sheet1的左頁(yè)邊距設(shè)為5厘米 Worksheets(Sheet1).PageSetup.LeftMargin = Application.CentimetersToPoints(5)End Sub示例01-16:使用Windows的計(jì)算器(ActivateMicrosoftApp方法)Sub CallCalc

27、ulate() Application.ActivateMicrosoftApp Index:=0End Sub示例說(shuō)明:運(yùn)行本程序后,將調(diào)用Windows的計(jì)算器。示例01-17:在程序中運(yùn)行另一個(gè)宏(Run方法)Sub runOtherMacro() MsgBox 本程序先選擇A1至C6單元格區(qū)域后執(zhí)行DrawLine宏 ActiveSheet.Range(A2:C6).Select Application.Run DrawLineEnd Sub示例01-18:在指定的時(shí)間執(zhí)行宏(OnTime方法)Sub AfterTimetoRun() MsgBox 從現(xiàn)在開(kāi)始,10秒后執(zhí)行程序test

28、FullScreen Application.OnTime Now + TimeValue(00:00:10), testFullScreenEnd Sub示例說(shuō)明:運(yùn)行本程序后,在10秒后將執(zhí)行程序testFullScreen。示例01-19:暫時(shí)停止宏運(yùn)行(Wait方法)Sub Stop5sMacroRun() Dim SetTime As Date MsgBox 按下確定,5秒后執(zhí)行程序testFullScreen SetTime = DateAdd(s, 5, Now() Application.Wait SetTime Call testFullScreenEnd Sub示例說(shuō)明:運(yùn)

29、行本程序后,按下彈出的提示框中的“確定”按鈕,等待5秒后執(zhí)行另一程序testFullScreen。示例01-20:按下指定的按鍵后執(zhí)行程序(OnKey方法)示例01-20-1Sub PressKeytoRun() MsgBox 按下Ctrl+D后將執(zhí)行程序testFullScreen Application.OnKey d, testFullScreenEnd Sub示例01-20-2Sub ResetKey() MsgBox 恢復(fù)原來(lái)的按鍵狀態(tài) Application.OnKey dEnd Sub示例說(shuō)明:Onkey方法的作用主要是指定特定的鍵,當(dāng)按下指定的鍵時(shí)運(yùn)行相應(yīng)的宏程序,或者按下指定

30、的鍵時(shí),使Excel屏蔽特定的功能。示例01-21:重新計(jì)算工作簿示例01-21-1Sub CalculateAllWorkbook() Application.CalculateEnd Sub示例說(shuō)明:當(dāng)工作簿的計(jì)算模式被設(shè)置為手動(dòng)模式后,運(yùn)用Calculate方法可以重新計(jì)算所有打開(kāi)的工作簿、工作簿中特定的工作表或者工作表中指定的單元格區(qū)域。示例01-21-2Sub CalculateFullSample() If Application.CalculationVersion Workbooks(1).CalculationVersion Then Application.Calculat

31、eFull End IfEnd Sub示例說(shuō)明:本示例先將當(dāng)前Microsoft Excel的版本與上次計(jì)算該工作簿的Excel版本進(jìn)行比較,如果兩個(gè)版本不同,則對(duì)所有打開(kāi)工作簿中的數(shù)據(jù)進(jìn)行一次完整計(jì)算。其中,CalculationVersion屬性返回工作簿的版本信息。示例01-22:控制函數(shù)重新計(jì)算(Volatile方法)Function NonStaticRand() 當(dāng)工作表中任意單元格重新計(jì)算時(shí)本函數(shù)更新 Application.Volatile True NonStaticRand = Rnd()End Function示例說(shuō)明:本示例摸仿Excel中的Rand()函數(shù),當(dāng)工作表單

32、元格發(fā)生變化時(shí),都會(huì)重新計(jì)算該函數(shù)。在例子中,使用了Volatile方法,強(qiáng)制函數(shù)進(jìn)行重新計(jì)算,即無(wú)論何時(shí)重新計(jì)算工作表,該函數(shù)都會(huì)重新計(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 Sub示例說(shuō)明:本示例獲取工作表Sh

33、eet1中單元格區(qū)域A1:C10中的最小值,使用了工作表函數(shù)Min()。一般,使用WorksheetFunction屬性引用工作表函數(shù),但如果VBA自帶有實(shí)現(xiàn)相同功能的函數(shù),則直接使用該函數(shù),否則會(huì)出現(xiàn)錯(cuò)誤。示例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 沒(méi)有交叉區(qū)域 Else

34、rSect.Select End IfEnd Sub示例說(shuō)明:本示例在工作表Sheet1中選定兩個(gè)命名區(qū)域rg1和rg2的重疊區(qū)域,如果所選區(qū)域不重疊,則顯示一條相應(yīng)的信息。其中,Intersect方法返回一個(gè)Range對(duì)象,代表兩個(gè)或多個(gè)范圍重疊的矩形區(qū)域。示例01-25:獲取路徑分隔符(PathSeparator屬性)Sub GetPathSeparator()MsgBox 路徑分隔符為 & Application.PathSeparatorEnd Sub示例說(shuō)明:本示例使用PathSeparator屬性返回路徑分隔符(“”)。示例01-26:快速移至指定位置(Goto方法)Sub Got

35、oSample() Application.Goto Reference:=Worksheets(Sheet1).Range(A154), _ scroll:=TrueEnd Sub示例說(shuō)明:本示例運(yùn)行后,將當(dāng)前單元格移至工作表Sheet1中的單元格A154。 示例01-27:顯示內(nèi)置對(duì)話框(Dialogs屬性)Sub DialogSample() Application.Dialogs(xlDialogOpen).ShowEnd Sub示例說(shuō)明:本示例顯示Excel的“打開(kāi)”文件對(duì)話框。其中,Dialogs屬性返回的集合代表所有的Excel內(nèi)置對(duì)話框。示例01-28:退出Excel(Send

36、Keys方法)Sub SendKeysSample() Application.SendKeys (%fx)End Sub示例說(shuō)明:本示例使用SendKeys方法退出Excel,若未保存,則會(huì)彈出提示對(duì)話框并讓用戶作出相應(yīng)的選擇。SendKeys方法的作用是摸擬鍵盤輸入,如例中的“%fx”表示在Excel中同時(shí)按下Alt、F和X三個(gè)鍵。示例01-29:關(guān)閉ExcelSub 關(guān)閉Excel() MsgBox Excel將會(huì)關(guān)閉 Application.QuitEnd Sub示例說(shuō)明:運(yùn)行本程序后,若該工作簿未保存,則會(huì)彈出對(duì)話框詢問(wèn)是否保存。 =(by fanjy)第二章 窗口(Window對(duì)象

37、)基本操作應(yīng)用示例(一)分類:ExcelVBAExcelVBA編程入門范例Window對(duì)象代表一個(gè)窗口,約有48個(gè)屬性和14個(gè)方法,能對(duì)窗口特性進(jìn)行設(shè)置和操作。Window對(duì)象是Windows集合中的成員,對(duì)于Application對(duì)象來(lái)說(shuō),Windows集合包含該應(yīng)用程序中的所有窗口;對(duì)于Workbook對(duì)象來(lái)說(shuō),Windows集合只包含指定工作簿中的窗口。下面介紹一些示例,以演示和說(shuō)明Window對(duì)象及其屬性和方法的運(yùn)用。示例02-01:激活窗口(Activate方法)Sub SelectWindow() Dim iWin As Long, i As Long, bWin MsgBox 依

38、次切換已打開(kāi)的窗口 iWin = Windows.Count MsgBox “您已打開(kāi)的窗口數(shù)量為:” & iWin For i = 1 To iWin Windows(i).Activate bWin = MsgBox(您激活了第 & i & 個(gè)窗口,還要繼續(xù)嗎?, vbYesNo) If bWin = vbNo Then Exit Sub Next iEnd Sub示例02-02:窗口狀態(tài)(WindowState屬性)示例02-02-01Sub WindowStateTest() MsgBox 當(dāng)前活動(dòng)工作簿窗口將最小化 Windows(1).WindowState = xlMinimiz

39、ed MsgBox 當(dāng)前活動(dòng)工作簿窗口將恢復(fù)正常 Windows(1).WindowState = xlNormal MsgBox 當(dāng)前活動(dòng)工作簿窗口將最大化 Windows(1).WindowState = xlMaximizedEnd Sub示例說(shuō)明:使用WindowState屬性可以返回或者設(shè)置窗口的狀態(tài)。示例中,常量xlMinimized、xlNormal和xlMaximized分別代表窗口不同狀態(tài)值,Windows(1)表示當(dāng)前活動(dòng)窗口。可以使用Windows(index)來(lái)返回單個(gè)的Window對(duì)象,其中的index為窗口的名稱或編號(hào),活動(dòng)窗口總是Windows(1)。示例02-0

40、2-02Sub testWindow() 測(cè)試Excel應(yīng)用程序窗口狀態(tài) MsgBox 應(yīng)用程序窗口將最大化 Application.WindowState = xlMaximized Call testWindowState MsgBox 應(yīng)用程序窗口將恢復(fù)正常 Application.WindowState = xlNormal MsgBox 應(yīng)用程序窗口已恢復(fù)正常 測(cè)試活動(dòng)工作簿窗口狀態(tài) MsgBox 當(dāng)前活動(dòng)工作簿窗口將最小化 ActiveWindow.WindowState = xlMinimized Call testWindowState MsgBox 當(dāng)前活動(dòng)工作簿窗口將最大化

41、 ActiveWindow.WindowState = xlMaximized Call testWindowState MsgBox 當(dāng)前活動(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:

42、MsgBox 應(yīng)用程序窗口已最大化 Case xlMinimized: MsgBox 應(yīng)用程序窗口已最小化 Case xlNormal: Select Case ActiveWindow.WindowState Case xlMaximized: MsgBox 當(dāng)前活動(dòng)工作簿窗口已最大化 Case xlMinimized: MsgBox 當(dāng)前活動(dòng)工作簿窗口已最小化 Case xlNormal: MsgBox 當(dāng)前活動(dòng)工作簿窗口已恢復(fù)正常 End Select End SelectEnd Sub示例說(shuō)明:本示例有兩個(gè)程序,其中testWindow()是主程序,調(diào)用子程序textWindowSta

43、te(),演示了應(yīng)用程序窗口和工作簿窗口的不同狀態(tài)。當(dāng)前活動(dòng)窗口一般代表當(dāng)前活動(dòng)工作簿窗口,讀者可以在VBE編輯器中按F8鍵逐語(yǔ)句運(yùn)行testWindow()程序,觀察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 For x = 50 To Application.Usa

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

45、indow.DisplayHeadings = Not ActiveWindow.DisplayHeadingsEnd Sub示例說(shuō)明:本示例切換是否顯示工作表中的行列標(biāo)號(hào)。運(yùn)行后,工作表中的行標(biāo)號(hào)和列標(biāo)號(hào)將消失;再次運(yùn)行后,行列標(biāo)號(hào)重新出現(xiàn),如此反復(fù)。您也可以將該屬性設(shè)置為False,以取消行列標(biāo)號(hào)的顯示,如ActiveWindow.DisplayHeadings = False;而將該屬性設(shè)置為True,則顯示行列標(biāo)號(hào)。示例02-03-02Sub testDisplayGridline() MsgBox “切換顯示/隱藏網(wǎng)格線” ActiveWindow.DisplayGridlines

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

47、iveWindow.DisplayHorizontalScrollBarEnd Sub示例說(shuō)明:本示例切換是否顯示工作表中的水平滾動(dòng)條。運(yùn)行后,工作表中的水平滾動(dòng)條消失,再次運(yùn)行后,水平滾動(dòng)條重新出現(xiàn),如此反復(fù)。您也可以將該屬性設(shè)置為False,以取消水平滾動(dòng)條,如ActiveWindow.DisplayHorizontalScrollBar = False;而將該屬性設(shè)置為True,則顯示水平滾動(dòng)條。同理,DisplayVerticalScrollBar屬性將用來(lái)設(shè)置垂直滾動(dòng)條。示例02-03-04Sub DisplayScrollBar() MsgBox 切換顯示/隱藏水平和垂直滾動(dòng)條 A

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

49、“顯示工作表中包含公式的單元格中的公式” ActiveWindow.DisplayFormulas = TrueEnd Sub示例說(shuō)明:本程序運(yùn)行后,工作表中含有公式的單元格將顯示公式而不是數(shù)值。若要顯示數(shù)值,則將該屬性設(shè)置為False,或者,如果工作表中的公式顯示的是結(jié)果數(shù)值,則該屬性為False。示例02-05:顯示/隱藏工作表標(biāo)簽(DisplayWorkbookTabs屬性)Sub testDisplayWorkbookTab() MsgBox “隱藏工作表標(biāo)簽” ActiveWindow.DisplayWorkbookTabs = FalseEnd Sub示例說(shuō)明:本程序運(yùn)行后,工作表

50、標(biāo)簽消失。將該屬性設(shè)置為True,重新顯示工作表標(biāo)簽。示例02-06:命名活動(dòng)窗口(Caption屬性)Sub testCaption() MsgBox 當(dāng)前活動(dòng)工作簿窗口的名字是: & ActiveWindow.Caption ActiveWorkbook.Windows(1).Caption = 我的工作簿 MsgBox 當(dāng)前活動(dòng)工作簿窗口的名字是: & ActiveWindow.CaptionEnd Sub示例說(shuō)明:本程序運(yùn)行后,顯示當(dāng)前活動(dòng)工作簿窗口原先的名稱(即工作簿窗口未處于最大化狀態(tài)時(shí),出現(xiàn)在窗口頂部標(biāo)題欄中的文字),然后設(shè)置當(dāng)前活動(dòng)工作簿窗口名稱,即使用語(yǔ)句ActiveWork

51、book.Windows(1).Caption = 我的工作簿,最后顯示當(dāng)前活動(dòng)工作簿窗口的新名稱。改變窗口的標(biāo)題并不會(huì)改變工作簿的名稱。示例02-07:移動(dòng)窗口到指定位置(ScrollRow屬性和ScrollColumn屬性)Sub testScroll() MsgBox “將當(dāng)前窗口工作表左上角單元格移至第10行第3列” ActiveWindow.ScrollRow = 10 ActiveWindow.ScrollColumn = 3End Sub示例說(shuō)明:本程序運(yùn)行后,當(dāng)前活動(dòng)窗口左上角單元格為第10行第3列。可以通過(guò)設(shè)置這兩個(gè)屬性來(lái)移動(dòng)窗口到指定的位置,也可以返回指定窗格或窗口最左上面

52、的行號(hào)或列號(hào)。示例02-08:調(diào)整窗口(EnableResize屬性)Sub testResize() MsgBox “設(shè)置窗口大小不可調(diào)整” ActiveWindow.EnableResize = FalseEnd Sub示例說(shuō)明:測(cè)試本程序前,將當(dāng)前工作簿窗口恢復(fù)為正常狀態(tài)(即讓工作簿標(biāo)題可見(jiàn)),運(yùn)行程序后,當(dāng)前工作簿窗口將不能調(diào)整其大小,右上角的最小化最大化按鈕將消失(即隱藏最大化和最小化按鈕)。該屬性設(shè)置為True,則能調(diào)整窗口大小。示例02-09:拆分窗格示例02-09-01Sub SplitWindow1() Dim iRow As Long, iColumn As Long Ms

53、gBox 以活動(dòng)單元格為基準(zhǔn)拆分窗格 iRow = ActiveCell.Row iColumn = ActiveCell.Column With ActiveWindow .SplitColumn = iColumn .SplitRow = iRow End With MsgBox 恢復(fù)原來(lái)的窗口狀態(tài) ActiveWindow.Split = FalseEnd Sub示例02-09-02Sub SplitWindow() Dim iRow As Long, iColumn As Long MsgBox 以活動(dòng)單元格為基準(zhǔn)拆分窗格 iRow = ActiveCell.Row iColumn = ActiveCell.Column With ActiveWindow .SplitColumn = iColumn .SplitRow = iRow End With MsgBox 恢復(fù)原來(lái)的窗口狀態(tài) ActiveWindow.SplitColumn = 0 ActiveWindow.SplitRow = 0End Sub示例說(shuō)明:本示例演示了以活動(dòng)單元格為基準(zhǔn)拆分窗格。如果指定窗口被拆分,則Split屬性的值為True;設(shè)置該屬性的值為False則取消窗格拆分。也可以設(shè)置SplitColumn屬性和SplitRow屬性的值來(lái)取消

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論