




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、excel vba編程實(shí)例150例 vbe編輯器及vba代碼輸入和調(diào)試的基本知識(shí)在學(xué)習(xí)這些實(shí)例的過程中,最好自已動(dòng)手將它們輸入到vbe編輯器中調(diào)試運(yùn)行,來查看它們的結(jié)果。當(dāng)然,您可以偷賴,將它們復(fù)制/粘貼到代碼編輯窗口后,進(jìn)行調(diào)試運(yùn)行。下面,對(duì)vbe編輯器界面進(jìn)行介紹,并對(duì)vba代碼輸入和調(diào)試的基本知識(shí)進(jìn)行簡(jiǎn)單的講解。激活vbe編輯器一般可以使用以下三種方式來打開vbe編輯器: 使用工作表菜單“工具宏visual basic編輯器”命令,如圖00-01所示; 在visual basic工具欄上,按“visual basic編輯器”按鈕,如圖00-02所示; 按alt+f11組合鍵。 圖00-0
2、1:選擇菜單“工具宏visual basic編輯器”命令來打開vbe編輯器 圖00-02:選擇visual basic工具欄上的“visual basic編輯器”命令按鈕來打開 1vbe編輯器此外,您也可以使用下面三種方式打開vbe編輯器: 在任一工作表標(biāo)簽上單擊鼠標(biāo)右鍵,在彈出的菜單中選擇“查看代碼”,則可進(jìn)入vbe編輯器訪問該工作表的代碼模塊,如圖00-03所示; 在工作簿窗口左上角的excel圖標(biāo)上單擊鼠標(biāo)右鍵,在彈出的菜單中選擇“查看代碼”,則可進(jìn)入vbe編輯器訪問活動(dòng)工作簿的thisworkbook代碼模塊,如圖00-04所示; 選擇菜單“工具宏宏”命令打開宏對(duì)話框,若該工作簿中有宏
3、程序,則單擊該對(duì)話框中的“編輯”按鈕即可進(jìn)行vbe編輯器代碼模塊,如圖00-05所示。 圖00-03:右擊工作表標(biāo)簽彈出菜單并選擇“查看代碼”打開vbe編輯器 圖00-04:右擊excel圖標(biāo)彈出菜單并選擇“查看代碼”打開vbe編輯器 2 圖00-05:在宏對(duì)話框中單擊“編輯”按鈕打開vbe編輯器vbe編輯器窗口簡(jiǎn)介剛打開vbe編輯器時(shí),所顯示的窗口如圖00-06所示,其中沒有代碼模塊窗口。3 圖00-06:剛打開vbe編輯器時(shí)的窗口可以在“工程資源管理器”中雙擊任一對(duì)象打開代碼窗口,或者選擇菜單“插入模塊”或“插入類模塊”來打開代碼窗口。一般vbe編輯器窗口及各組成部件名稱如圖00-07所示
4、,可以通過“視圖”菜單中的菜單項(xiàng)選擇所出現(xiàn)的窗口。同時(shí),可以在“工程屬性”窗口中設(shè)置或修改相應(yīng)對(duì)象的屬性。 4 圖00-07:vbe編輯器窗口下面是帶有用戶窗體的vbe編輯器窗口,如圖00-08所示。選擇vbe菜單“插入用戶窗體”,即可插入一個(gè)用戶窗體。當(dāng)插入用戶窗體后,在“工程資源管5理器”窗口中會(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)的用戶窗體;在用戶窗體圖標(biāo)或者是在用戶窗體上單擊鼠標(biāo)右鍵,然后在彈出的菜單中選擇“查看代碼”,則會(huì)出現(xiàn)用
5、戶窗體代碼窗口。 圖00-08:vbe編輯器窗口(帶有用戶窗體)在vbe編輯器中輸入vba代碼6如前所述,您可以選擇vbe菜單“插入用戶窗體/模塊/類模塊”來插入模塊或用戶窗體以及相應(yīng)的代碼窗口。此外,您也可以在“工程資源管理器”中單擊鼠標(biāo)右鍵,從彈出的菜單中選擇“插入用戶窗體/模塊/類模塊”來實(shí)現(xiàn)上面的操作。在獲取相應(yīng)的代碼模塊窗口后,就可以輸入vba代碼了。在vbe編輯器的代碼模塊中輸入vba代碼,通常有以下幾種方法: 手工鍵盤輸入; 使用宏錄制器,即選擇菜單“工具宏錄制新宏”命令,將所進(jìn)行的操作自動(dòng)錄制成宏代碼; 復(fù)制/粘貼代碼,即將現(xiàn)有的代碼復(fù)制后,粘貼到相應(yīng)的代碼模塊中; 導(dǎo)入代碼模
6、塊,即在vbe編輯器中選擇菜單“文件導(dǎo)入文件”或在“工程資源管理器”的任一對(duì)象上右擊鼠標(biāo)選擇菜單“導(dǎo)入文件”,選擇相應(yīng)的代碼文件導(dǎo)入。如果不想要某個(gè)模塊了,可以選擇菜單“文件移除模塊”,也可以在相應(yīng)的模塊上單擊鼠標(biāo)右鍵,從彈出的菜單中選擇“移除模塊”。此時(shí),會(huì)彈出一個(gè)警告框,詢問在移除模塊前是否將其導(dǎo)出,可以根據(jù)需要進(jìn)行選擇。也可以選擇菜單“文件導(dǎo)出文件”或在相應(yīng)的模塊上單擊鼠標(biāo)右鍵后,從彈出的菜單中選擇“導(dǎo)出文件”,將移除的模塊保存在相應(yīng)的文件夾中。這樣,以后可以對(duì)其進(jìn)行導(dǎo)入,從而加以利用。調(diào)試vba代碼在vbe編輯器的菜單中,有兩項(xiàng)與調(diào)試運(yùn)行有關(guān)的菜單項(xiàng),即“調(diào)試”菜單和“運(yùn)行”菜單,它們
7、提供了各種調(diào)試和運(yùn)行的手段。在我現(xiàn)階段進(jìn)行代碼調(diào)試時(shí),常用到的有以下幾個(gè): 逐語句??梢园磃8鍵對(duì)代碼按順序一條一條語句運(yùn)行,從而找出語句或邏輯錯(cuò)誤。 設(shè)置斷點(diǎn)。在可能存在問題的語句處設(shè)置斷點(diǎn)(可通過在相應(yīng)代碼前的空白部位單擊,將會(huì)出現(xiàn)一個(gè)深紅色的橢圓即斷點(diǎn)),當(dāng)程序運(yùn)行至斷點(diǎn)處時(shí),會(huì)中止運(yùn)行。 在語句的適當(dāng)部位設(shè)置debug.print語句,運(yùn)行后其結(jié)果會(huì)顯示在“立即窗口”中,可以此測(cè)試或跟蹤變量的值。 在“立即窗口”中測(cè)試。對(duì)值的測(cè)試或跟蹤,也可以以“?”開頭,在“立即窗口”中輸入需要測(cè)試值的語句,按enter回車鍵后將立即出現(xiàn)結(jié)果;對(duì)執(zhí)行語句的測(cè)試,可直接在“立即窗口”中輸入,按ente
8、r回車鍵后將執(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)如果遇到疑問或錯(cuò)誤,可以利用excel自帶的vba幫助系統(tǒng)。 可以在如圖00-09所示的部位輸入需要幫助的關(guān)鍵詞,按enter回車鍵后將會(huì)出現(xiàn)相關(guān)主題。用鼠標(biāo)單擊相應(yīng)的主題即會(huì)出現(xiàn)詳細(xì)的幫助信息。 圖00-09:幫助搜索窗口 可以按f2鍵,調(diào)出“對(duì)象瀏覽器”窗口(如圖0
9、0-10所示),在搜索文本框中輸 7入需要幫助的關(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編程入門范例參考或引用了以下書籍和資料:8(1)excel 2003高級(jí)vba編程寶典(2)excel 2003與vba編程從入門到精通(中文版)(3)巧學(xué)巧用excel 2003 vba與宏(中文版)(4)excelvba應(yīng)用程序?qū)I(yè)設(shè)計(jì)實(shí)用
10、指南(5)excelvba應(yīng)用開發(fā)與實(shí)例精講(6)一些網(wǎng)上資源更多的信息關(guān)于excelvba的更多參考和學(xué)習(xí)資源,可以在上查找,有疑問也可以在excelhome論壇中提問。您也可以登錄我的博客http:/fanjy.bl,上面有很多excel的學(xué)習(xí)資料。同時(shí),歡迎與我聯(lián)系交流,我的e-mail是:?!皩W(xué)習(xí)excel,使用vba對(duì)excel進(jìn)行控制操作是我很熱衷的業(yè)余愛好之一?!眆anjy 第一章 excel應(yīng)用程序?qū)ο?application對(duì)象)及其常用方法 application對(duì)象代表整個(gè)microsoft excel應(yīng)用程
11、序,帶有175個(gè)屬性和52個(gè)方法,可以設(shè)置整個(gè)應(yīng)用程序的環(huán)境或配置應(yīng)用程序。 示例01-01:體驗(yàn)開/關(guān)屏幕更新(screenupdating屬性) sub 關(guān)閉屏幕更新() msgbox "順序切換工作表sheet1sheet2sheet3sheet2,先開啟屏幕更新,然后關(guān)閉屏幕更新" worksheets(1).select msgbox "目前屏幕中顯示工作表sheet1" application.screenupdating = true worksheets(2).select msgbox "顯示sheet2了嗎?" w
12、orksheets(3).select msgbox "顯示sheet3了嗎?" worksheets(2).select msgbox "下面與前面執(zhí)行的程序代碼相同,但關(guān)閉屏幕更新功能" worksheets(1).select msgbox "目前屏幕中顯示工作表sheet1" & chr(10) & "關(guān)屏屏幕更新功能" application.screenupdating = false 9worksheets(2).select msgbox "顯示sheet2了嗎?"
13、; worksheets(3).select msgbox "顯示sheet3了嗎?" worksheets(2).select application.screenupdating = true end sub 示例說明:screenupdating屬性用來控制屏幕更新。當(dāng)運(yùn)行一個(gè)宏程序處理涉及到多個(gè)工作表或單元格中的大量數(shù)據(jù)時(shí),若沒有關(guān)閉屏幕更新,則會(huì)占用cpu的處理時(shí)間,從而降低程序的運(yùn)行速度,而關(guān)閉該屬性則可顯著提高程序運(yùn)行速度。 示例01-02:使用狀態(tài)欄(statusbar屬性) sub teststatusbar() application.displayst
14、atusbar = true 開啟狀態(tài)欄顯示 賦值狀態(tài)欄顯示的文本 application.statusbar = "end sub 示例說明:statusbar屬性用來指定顯示在狀態(tài)欄上的信息。若不想再顯示狀態(tài)欄文本,可使用application.statusbar = false語句關(guān)閉狀態(tài)欄顯示,也可以在程序開始將原先的狀態(tài)欄設(shè)置存儲(chǔ),如使用語句oldstatusbar = application.displaystatusbar將狀態(tài)欄原來的信息存儲(chǔ)在變量oldstatusbar,在程序運(yùn)行完成或退出時(shí),將變量重新賦值給狀態(tài)欄,如使用語句application.display
15、statusbar = 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)形狀
16、" 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)前允許使用的 msgbox "excel當(dāng)前已使用的 msgbox "excel可以使用的 msgbox "本機(jī)操作系統(tǒng)的名稱和版本為:" & appl
17、ication.operatingsystem 10msgbox "本產(chǎn)品所登記的組織名為:" & application.organizationname msgbox "當(dāng)前用戶名為:" & application.username msgbox "當(dāng)前使用的excel版本為:" & application.version end sub 示例說明:可以使用給username屬性賦值以設(shè)置用戶名稱。 示例01-05:退出復(fù)制/剪切模式(cutcopymode屬性) sub exitcutcopymode()
18、 application.cutcopymode = false end sub 示例說明:退出復(fù)制/剪切模式后,在程序運(yùn)行時(shí)所進(jìn)行的復(fù)制或剪切操作不會(huì)在原單元格區(qū)域留下流動(dòng)的虛框線。需要提醒的是,在程序運(yùn)行完后,應(yīng)使用application.cutcopymode = false語句恢復(fù)該屬性的默認(rèn)設(shè)置。 示例01-06:禁止彈出警告信息(displayalerts屬性) sub testalertsdisplay() application.displayalerts = false end sub 示例說明:在程序運(yùn)行過程中,有時(shí)由于excel本身設(shè)置的原因,會(huì)彈出對(duì)話框,從而中斷程序的
19、運(yùn)行,您可以在程序之前加上application.displayalerts = false語句以禁止彈出這些對(duì)話框而不影響程序正常運(yùn)行。需要注意的是,在程序運(yùn)行結(jié)束前,應(yīng)使displayalerts屬性恢復(fù)為缺省狀態(tài),即使用語句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è)置為全屏幕" a
20、pplication.displayfullscreen = true msgbox "恢復(fù)為原來的狀態(tài)" application.displayfullscreen = false end sub 示例01-08:excel啟動(dòng)的文件夾路徑 sub excelstartfolder() msgbox "excel啟動(dòng)的文件夾路徑為:" & chr(10) & application.startuppathend sub 示例01-09:打開最近使用過的文檔 sub openrecentfiles() msgbox "顯示最近使
21、用過的第三個(gè)文件名,并打開該文件" msgbox "最近使用的第三個(gè)文件的名稱為:" & application.recentfiles(3).name 11application.recentfiles(3).open end sub 示例01-10:打開文件(findfile方法) sub findfileopen() on error resume next msgbox "請(qǐng)打開文件", vbokonly + vbinformation, "打開文件" if not application.findfile
22、then msgbox "文件未找到", vbokonly + vbinformation, "打開失敗" end if end sub 示例說明:本示例將顯示“打開”文件對(duì)話框,若用戶未打開文件(即點(diǎn)擊“取消”按鈕),則會(huì)顯示“打開失敗”信息框。示例中使用了findfile方法,用來顯示“打開”對(duì)話框并讓用戶打開一個(gè)文件。如果成功打開一個(gè)新文件,則該值為true。如果用戶取消了操作并退出該對(duì)話框,則該值為false。 示例01-11:文件對(duì)話框操作(filedialog屬性) sub usefiledialogopen() dim lngcount a
23、s long 開啟"打開文件"對(duì)話框 with application.filedialog(msofiledialogopen) .allowmultiselect = true .show 顯示所選的每個(gè)文件的路徑 for lngcount = 1 to .selecteditems.count msgbox .selecteditems(lngcount) next lngcount end with end sub 示例說明:本示例顯示“打開文件”對(duì)話框,當(dāng)用戶在其中選擇一個(gè)或多個(gè)文件后,將依次顯示每個(gè)文件的路徑。其中,filedialog屬性返回打開和保存對(duì)話框中
24、一系列對(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:excelsamplesample" end sub 示例說明:運(yùn)行本程序后,將工作簿以帶后綴名.xlw保存到d盤的excelsample文件夾中,生成的文件全名為sample.xlw。當(dāng)改變工作簿并
25、保存時(shí),excel會(huì)詢問是覆蓋原文件還是保存副本。 示例01-13:改變excel工作簿名字(caption屬性) 12sub setcaption() application.caption = "my excelbook" end sub 示例說明:運(yùn)行本程序后,將工作簿左上角excel圖標(biāo)右側(cè)的“microsoft excel”改為“my excelbook”。 示例01-14:使用inputbox方法 sub sampleinputbox() dim vinput vinput = inputbox("請(qǐng)輸入用戶名:", "獲取用戶名&
26、quot;, application.username) msgbox "您好!" & vinput & ".很高興能認(rèn)識(shí)您.", vbokonly, "打招呼" end sub 示例01-15:設(shè)置頁邊距(centimeterstopoints方法) sub setleftmargin() msgbox "將工作表sheet1的左頁邊距設(shè)為5厘米" worksheets("sheet1").pagesetup.leftmargin = application.centimete
27、rstopoints(5) end sub 示例01-16:使用windows的計(jì)算器(activatemicrosoftapp方法) sub callcalculate() application.activatemicrosoftapp index:=0 end sub 示例說明:運(yùn)行本程序后,將調(diào)用windows的計(jì)算器。 示例01-17:在程序中運(yùn)sub runothmsgbox "本程序先選擇a1至c6activesheet.rangapplication.rend sub 行另一個(gè)宏(run方法) ermacro() 單元格區(qū)域后執(zhí)行drawline宏" e(&
28、quot;a2:c6").select un "drawline" 示例01-18:在指定的時(shí)間執(zhí)行宏(ontime方法) sub aftertimetorun() msgbox "從現(xiàn)在開始,10秒后執(zhí)行程序testfullscreen" application.ontime now + timevalue("00:00:10"), "testfullscreen" end sub 示例說明:運(yùn)行本程序后,在10秒后將執(zhí)行程序testfullscreen。 示例01-19:暫時(shí)停止宏運(yùn)行(wait方法)
29、 sub stop5smacrorun() dim settime as date msgbox "按下確定,5秒后執(zhí)行程序testfullscreen" 13settime = dateadd("s", 5, now() application.wait settime call testfullscreen end sub 示例說明:運(yùn)行本程序后,按下彈出的提示框中的“確定”按鈕,等待5秒后執(zhí)行另一程序testfullsalculate方法可以重新計(jì)算所有打開的工作簿、工作簿中特定的工作表或者工作表中指定的單元格區(qū)域。示例01-21-2 sub ca
30、lculatefullsample() if application.calculationversion <> workbooks(1).calculationversion thenapplication.calculatefull end if end sub 示例說明:本示例先將當(dāng)前microsoft excel的版本與上次計(jì)算該工作簿的excel版本進(jìn)行比較,如果兩個(gè)版本不同,則對(duì)所有打開工作簿中的數(shù)據(jù)進(jìn)行一次完整計(jì)算。其中,calculationversion屬性返回工作簿的版本信息。 示例01-2funct當(dāng)工作appl2:控制函數(shù)重新計(jì)ion nonst表中任意單元
31、格重ication.vo14 算a新l(volatile方法) ticrand() 計(jì)算時(shí)本函數(shù)更新 atile truenonstaticrand = rnd() end function 示例說明:本示例摸仿excel中的rand()函數(shù),當(dāng)工作表單元格發(fā)生變化時(shí),都會(huì)重新計(jì)算該函數(shù)。在例子中,使用了volatile方法,強(qiáng)制函數(shù)進(jìn)行重新計(jì)算,即無論何時(shí)重新計(jì)算工作表,該函數(shù)都會(huì)重新計(jì)算。 示例01-23:利用工作表函數(shù)(worksheetfunction屬性) sub worksheetfunctionsample() dim myrange as range, answer set m
32、yrange = worksheets("sheet1").range("a1:c10") answer = application.worksheetfunction.min(myrange) msgbox answer end sub 示例說明:本示例獲取工作表sheet1中單元格區(qū)域a1:c10中的最小值,使用了工作表函數(shù)min()。一般,使用worksheetfunction屬性引用工作表函數(shù),但如果vba自帶有實(shí)現(xiàn)相同功能的函數(shù),則直接使用該函數(shù),否則會(huì)出現(xiàn)錯(cuò)誤。 示例01-24:獲取重疊區(qū)域(intersect方法) sub intersec
33、trange() 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 if end sub 示例說明:本示例在工作表sheet1中選定兩個(gè)命名區(qū)域rg1和rg2的重疊區(qū)域,如果所選區(qū)域不重疊,則顯示一條相應(yīng)的信息。其中,int
34、ersect方法返回一個(gè)range對(duì)象,代表兩個(gè)或多個(gè)范圍重疊的矩形區(qū)域。 示例01-25:獲取路徑分隔符(pathseparator屬性) sub getpathseparator() msgbox "路徑分隔符為" & application.pathseparator end sub 示例說明:本示例使用pathseparator屬性返回路徑分隔符(“”)。 示例01-26:快速移至指定位置(goto方法) sub gotosample() application.goto reference:=worksheets("sheet1").r
35、ange("a154"), _ scroll:=true end sub 示例說明:本示例運(yùn)行后,將當(dāng)前單元格移至工作表sheet1中的單元格a154。 15 示例01-27:顯示 application.dialogs(xldialogopen).show end sub 示例說明:本示例顯示excel的“打開”文件對(duì)話框。其中,dialogs屬性返回的集合代表所有的excel application.sendkeys ("%fx") end sub 示例說明:本示例使用sendkeys方法退出excel,若未保存,則會(huì)彈出提示對(duì)話框并讓用戶作出相應(yīng)的
36、選擇。sendkeys方法的作用是摸擬鍵盤輸入,如例中的“%fx”表示在excel中同時(shí)按下alt、f和x三個(gè)鍵。 示例01-29:關(guān)閉excel sub 關(guān)閉excel() msgbox "excel將會(huì)關(guān)閉" application.quit end sub 示例說明:運(yùn)行本程序后,若該工作簿未保存,則會(huì)彈出對(duì)話框詢問是否保存。= (by fanjy) (一) window對(duì)象代表一個(gè)窗口,約有48個(gè)屬性和14個(gè)方法,能對(duì)窗口特性進(jìn)行設(shè)置和操作。window對(duì)象是windows集合中的成員,對(duì)于application對(duì)象來說,windows集合包含該應(yīng)用程序中的所有窗口
37、;對(duì)于workbook對(duì)象來說,windows集合只包含指定工作簿中的窗口。下面介紹一些示例,以演示和說明window對(duì)象及其屬性和方法的運(yùn)用。 示例02-01:激活窗口(activate方法) sub selectwindow() dim iwin as long, i as long, bwin 16msgbox "依次切換已打開的窗口" iwin = windows.count msgbox “您已打開的窗口數(shù)量為:” & iwin for i = 1 to iwin windows(i).activate bwin = msgbox("您激活了第
38、" & i & "個(gè)窗口,還要繼續(xù)嗎?", vbyesno) if bwin = vbno then exit sub next i end sub 示例02-02:窗口狀態(tài)(windowstate屬性)示例02-02-01 sub windowstatetest() msgbox "當(dāng)前活動(dòng)工作簿窗口將最小化" windows(1).windowstate = xlminimized msgbox "當(dāng)前活動(dòng)工作簿窗口將恢復(fù)正常" windows(1).windowstate = xlnormal msgb
39、ox "當(dāng)前活動(dòng)工作簿窗口將最大化" windows(1).windowstate = xlmaximized end sub 示例說明:使用windowstate屬性可以返回或者設(shè)置窗口的狀態(tài)。示例中,常量xlminimized、xlnormal和xlmaximized分別代表窗口不同狀態(tài)值,windows(1)表示當(dāng)前活動(dòng)窗口。可以使用windows(index)來返回單個(gè)的window對(duì)象,其中的index為窗口的名稱或編號(hào),活動(dòng)窗口總是windows(1)。示例02-02-02 sub testwindow() 測(cè)試excel應(yīng)用程序窗口狀態(tài) msgbox &quo
40、t;應(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)用程序窗口將最小化" 17application.windowstate = xlminimized call testwindowstate end sub * sub testwindowstate() select case a
42、pplication.windowstate case xlmaximized: 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 "
43、;當(dāng)前活動(dòng)工作簿窗口已恢復(fù)正常" end select end select end sub 示例說明:本示例有兩個(gè)程序,其中testwindow()是主程序,調(diào)用子程序textwindowstate(),演示了應(yīng)用程序窗口和工作簿窗口的不同狀態(tài)。當(dāng)前活動(dòng)窗口一般代表當(dāng)前活動(dòng)工作簿窗口,讀者可以在vbe編輯器中按f8鍵逐語句運(yùn)行testwindow()程序,觀察excel應(yīng)用程序及工作簿窗口的不同狀態(tài)。此外,在子程序中,還運(yùn)用了嵌套的select case結(jié)構(gòu)。示例02-02-03 sub sheetgradualgrow() dim x as integer with active
44、window .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.usablewidth .width = x next x .windowstate = xlmaximized end with end sub 示例說明:本示例將動(dòng)態(tài)演示工作簿窗口由小到大直至最大化的變化過程。在運(yùn)行程序時(shí),您可以將vbe窗口縮小,從而在工作簿中查看動(dòng)態(tài)效果,也
45、可以在excel中選擇菜單中的宏命令執(zhí)行以查看效果。 示例02-03:切18 換顯示工作表元素示例02-03-01 sub testdisplayheading() msgbox “切換顯示/隱藏行列標(biāo)號(hào)” activewindow.displayheadings = not activewindow.displayheadings end sub 示例說明:本示例切換是否顯示工作表中的行列標(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 =
46、false;而將該屬性設(shè)置為true,則顯示行列標(biāo)號(hào)。示例02-03-02 sub testdisplaygridline() msgbox “切換顯示/隱藏網(wǎng)格線” activewindow.displaygridlines = not activewindow.displaygridlines end sub 示例說明:本示例切換是否顯示工作表中的網(wǎng)格線。運(yùn)行后,工作表中的網(wǎng)格線消失,再次運(yùn)行后,網(wǎng)格線重新出現(xiàn),如此反復(fù)。您也可以將該屬性設(shè)置為false,以取消網(wǎng)格線顯示,如activewindow.displaygridlines = false;而將該屬性設(shè)置為true,則顯示網(wǎng)格線。
47、示例02-03-03 sub displayhorizontalscrollbar() msgbox “切換顯示/隱藏水平滾動(dòng)條” activewindow.displayhorizontalscrollbar = _ not activewindow.displayhorizontalscrollbar end sub 示例說明:本示例切換是否顯示工作表中的水平滾動(dòng)條。運(yùn)行后,工作表中的水平滾動(dòng)條消失,再次運(yùn)行后,水平滾動(dòng)條重新出現(xiàn),如此反復(fù)。您也可以將該屬性設(shè)置為false,以取消水平滾動(dòng)條,如activewindow.displayhorizontalscrollbar = false;
48、而將該屬性設(shè)置為true,則顯示水平滾動(dòng)條。 同理,displayverticalscrollbar屬性將用來設(shè)置垂直滾動(dòng)條。示例02-03-04 sub displayscrollbar() msgbox "切換顯示/隱藏水平和垂直滾動(dòng)條" application.displayscrollbars = not (application.displayscrollbars) end sub 示例說明:本示例切換是否顯示工作表中的水平和垂直滾動(dòng)條。運(yùn)行后,工作表中的水平和垂直滾動(dòng)條同時(shí)消失,再次運(yùn)行后,水平和垂直滾動(dòng)條重新出現(xiàn),如此反復(fù)。您也可以將該屬性設(shè)置為false,以
49、取消水平和垂直滾動(dòng)條顯示,如application.displayscrollbars= false;而將該屬性設(shè)置為true,則顯示水平和垂直滾動(dòng)條。 示s 例02-04:顯示公式(displayformulas屬性) ub displayformula() msgbox “顯示工作表中包含公式的單元格中的公式” activewindow.displayformulas = true 19end sub 示例說明:本程序運(yùn)行后,工作表中含有公式的單元格將顯示公式而不是數(shù)值。若要顯示數(shù)值,則將該屬性設(shè)置為false,或者,如果工作表中的公式顯示的是結(jié)果數(shù)值,則該屬性為false。 示例02-0
50、5:顯示/隱藏工作表標(biāo)簽(displayworkbooktabs屬性) sub testdisplayworkbooktab() msgbox “隱藏工作表標(biāo)簽” activewindow.displayworkbooktabs = false end sub 示例說明:本程序運(yùn)行后,工作表標(biāo)簽消失。將該屬性設(shè)置為true,重新顯示工作表標(biāo)簽。 示例02-06:命名活動(dòng)窗口(caption屬性) sub testcaption() msgbox "當(dāng)前活動(dòng)工作簿窗口的名字是:" & activewindow.caption activeworkbook.window
51、s(1).caption = "我的工作簿" msgbox "當(dāng)前活動(dòng)工作簿窗口的名字是:" & activewindow.caption end sub 示例說明:本程序運(yùn)行后,顯示當(dāng)前活動(dòng)工作簿窗口原先的名稱(即工作簿窗口未處于最大化狀態(tài)時(shí),出現(xiàn)在窗口頂部標(biāo)題欄中的文字),然后設(shè)置當(dāng)前活動(dòng)工作簿窗口名稱,即使用語句activeworkbook.windows(1).caption = "我的工作簿",最后顯示當(dāng)前活動(dòng)工作簿窗口的新名稱。改變窗口的標(biāo)題并不會(huì)改變工作簿的名稱。 示例02-07:移動(dòng)窗口到指定位置(scroll
52、row屬性和scrollcolumn屬性) sub testscroll() msgbox “將當(dāng)前窗口工作表左上角單元格移至第10行第3列” activewindow.scrollrow = 10 activewindow.scrollcolumn = 3 end sub 示例說明:本程序運(yùn)行后,當(dāng)前活動(dòng)窗口左上角單元格為第10行第3列??梢酝ㄟ^設(shè)置這兩個(gè)屬性來移動(dòng)窗口到指定的位置,也可以返回指定窗格或窗口最左上面的行號(hào)或列號(hào)。 示例02-08:調(diào)整窗口(enableresize屬性) sub testresize() msgbox “設(shè)置窗口大小不可調(diào)整” activewindow.ena
53、bleresize = false end sub 示例說明:測(cè)試本程序前,將當(dāng)前工作簿窗口恢復(fù)為正常狀態(tài)(即讓工作簿標(biāo)題可見),運(yùn)行程序后,當(dāng)前工作簿窗口將不能調(diào)整其大小,右上角的最小化最大化按鈕將消失(即隱藏最大化和最小化按鈕)。該屬性設(shè)置為true,則能調(diào)整窗口大小。20示例02-09:拆分窗格示例02-09-01 sub splitwindow1() dim irow as long, icolumn as long msgbox "以活動(dòng)單元格為基準(zhǔn)拆分窗格" irow = activecell.row icolumn = activecell.column wi
54、th activewindow .splitcolumn = icolumn .splitrow = irow end with msgbox "恢復(fù)原來的窗口狀態(tài)" activewindow.split = false end sub示例02-09-02 sub splitwindow() dim irow as long, icolumn as long msgbox "以活動(dòng)單元格為基準(zhǔn)拆分窗格" irow = activecell.row icolumn = activecell.column with activewindow .splitco
55、lumn = icolumn .splitrow = irow end with msgbox "恢復(fù)原來的窗口狀態(tài)" activewindow.splitcolumn = 0 activewindow.splitrow = 0 end sub 示例說明:本示例演示了以活動(dòng)單元格為基準(zhǔn)拆分窗格。如果指定窗口被拆分,則split屬性的值為true;設(shè)置該屬性的值為false則取消窗格拆分。也可以設(shè)置splitcolumn屬性和splitrow屬性的值來取消窗格拆分。 示例02-10:凍結(jié)窗格(freezepanes屬性) sub testfreezepane() msgbox “凍結(jié)窗格” activewindow.freezepanes = true end sub 示例說明:運(yùn)行本程序后,將會(huì)凍結(jié)活動(dòng)單元格所在位置上方和左側(cè)的單元格區(qū)域。將該屬性的值設(shè)置為false,將取消凍結(jié)窗格。 示例02-11:設(shè)置網(wǎng)格線顏色(gridlinecolor屬性和gridlinecolorindex屬性) sub setgridlinecolor() dim icolor as long icolor=activewindow.gridlinecolor 21msgbox "將活動(dòng)窗口的網(wǎng)格線顏色設(shè)為紅色" act
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)課題申報(bào)書范例
- 區(qū)級(jí)教師課題申報(bào)書
- 合同范本修訂
- 合伙分紅合同范本
- 微課題申報(bào)書
- 教改課題申報(bào)書怎么填
- 銜接課題申報(bào)書范文
- 員工持股合同范本
- 國(guó)家申報(bào)書課題名稱結(jié)構(gòu)
- 個(gè)人購(gòu)酒合同范本
- 開曼群島公司法2024版中文譯本(含2024年修訂主要內(nèi)容)
- 東北師大附屬中學(xué)2025屆高考數(shù)學(xué)四模試卷含解析
- 漏采血標(biāo)本不良事件根因分析
- 安全管理工作的成果與亮點(diǎn)
- 糧食儲(chǔ)備庫(kù)內(nèi)圓筒鋼板倉(cāng)及附房工程施工組織設(shè)計(jì)
- 學(xué)??萍脊?jié)活動(dòng)方案
- 賽事運(yùn)營(yíng)創(chuàng)新模式
- 金融服務(wù)消費(fèi)糾紛調(diào)解工作規(guī)范
- 《國(guó)際貿(mào)易實(shí)務(wù)(英文版)》(英文課件) - Ch 1 Introduction to International Trade Practices-Ch 5 Price
- 新生兒科、兒科《新生兒窒息復(fù)蘇》理論考試試題
- 神經(jīng)重癥氣管切開患者氣道功能康復(fù)與管理專家共識(shí)(2024)解讀
評(píng)論
0/150
提交評(píng)論