版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第一章Excel應用程序對象(Application對象)及其常用方法基本操作應用示例示例01-01:體驗開/關屏幕更新(ScreenUpdating屬性)Sub關閉屏幕更新()MsgBox"順序切換工作表Sheet1→Sheet2→Sheet3→Sheet2,先開啟屏幕更新,然后關閉屏幕更新"Worksheets(1).SelectMsgBox"目前屏幕中顯示工作表Sheet1"Application.ScreenUpdating=TrueWorksheets(2).SelectMsgBox"顯示Sheet2了嗎?"Worksheets(3).SelectMsgBox"顯示Sheet3了嗎?"Worksheets(2).SelectMsgBox"下面與前面執(zhí)行的程序代碼相同,但關閉屏幕更新功能"Worksheets(1).SelectMsgBox"目前屏幕中顯示工作表Sheet1"&Chr(10)&"關屏屏幕更新功能"Application.ScreenUpdating=FalseWorksheets(2).SelectMsgBox"顯示Sheet2了嗎?"Worksheets(3).SelectMsgBox"顯示Sheet3了嗎?"Worksheets(2).SelectApplication.ScreenUpdating=TrueEndSub示例說明:ScreenUpdating屬性用來控制屏幕更新。當運行一個宏程序處理涉及到多個工作表或單元格中的大量數(shù)據(jù)時,若沒有關閉屏幕更新,則會占用CPU的處理時間,從而降低程序的運行速度,而關閉該屬性則可顯著提高程序運行速度。Application對象代表整個MicrosoftExcel應用程序,帶有175個屬性和52個方法,可以設置整個應用程序的環(huán)境或配置應用程序。示例01-02:使用狀態(tài)欄(StatusBar屬性)
示例01-03:處理光標(Cursor屬性)SubtestStatusBar()Application.DisplayStatusBar=True'開啟狀態(tài)欄顯示'賦值狀態(tài)欄顯示的文本Application.StatusBar=EndSub示例說明:StatusBar屬性用來指定顯示在狀態(tài)欄上的信息。若不想再顯示狀態(tài)欄文本,可使用Application.StatusBar=False語句關閉狀態(tài)欄顯示,也可以在程序開始將原先的狀態(tài)欄設置存儲,如使用語句oldStatusBar=Application.DisplayStatusBar將狀態(tài)欄原來的信息存儲在變量oldStatusBar,在程序運行完成或退出時,將變量重新賦值給狀態(tài)欄,如使用語句Application.DisplayStatusBar=oldStatusBar,以恢復狀態(tài)欄原狀(01-2)SubViewCursors()Application.Cursor=xlNorthwestArrowMsgBox"您將使用箭頭光標,切換到Excel界面查看光標形狀"Application.Cursor=xlIBeamMsgBox"您將使用工形光標,切換到Excel界面查看光標形狀"Application.Cursor=xlWaitMsgBox"您將使用等待形光標,切換到Excel界面查看光標形狀"Application.Cursor=xlDefaultMsgBox"您已將光標恢復為缺省狀態(tài)"EndSub(01-3)示例01-04:獲取系統(tǒng)信息
示例01-05:退出復制/剪切模式(CutCopyMode屬性)SubGetSystemInfo()MsgBox"Excel版本信息為:"&Application.CalculationVersionMsgBox"Excel當前允許使用的內存為:"&Application.MemoryFreeMsgBox"Excel當前已使用的內存為:"&Application.MemoryUsedMsgBox"Excel可以使用的內存為:"&Application.MemoryTotalMsgBox"本機操作系統(tǒng)的名稱和版本為:"&Application.OperatingSystemMsgBox"本產品所登記的組織名為:"&Application.OrganizationNameMsgBox"當前用戶名為:"&Application.UserNameMsgBox"當前使用的Excel版本為:"&Application.VersionEndSub示例說明:可以使用給UserName屬性賦值以設置用戶名稱。(01-4)SubexitCutCopyMode()Application.CutCopyMode=FalseEndSub示例說明:退出復制/剪切模式后,在程序運行時所進行的復制或剪切操作不會在原單元格區(qū)域留下流動的虛框線。需要提醒的是,在程序運行完后,應使用Application.CutCopyMode=False語句恢復該屬性的默認設置。(01-5)示例01-06:禁止彈出警告信息(DisplayAlerts屬性)
示例01-07:將Excel全屏幕顯示
示例01-08:Excel啟動的文件夾路徑SubtestAlertsDisplay()Application.DisplayAlerts=FalseEndSub示例說明:在程序運行過程中,有時由于Excel本身設置的原因,會彈出對話框,從而中斷程序的運行,您可以在程序之前加上Application.DisplayAlerts=False語句以禁止彈出這些對話框而不影響程序正常運行。需要注意的是,在程序運行結束前,應使DisplayAlerts屬性恢復為缺省狀態(tài),即使用語句Application.DisplayAlerts=True。該屬性的默認設置為True,當將該屬性設置為False時,Excel會使直接使用對話框中默認的選擇,從而不會因為彈出對話框而影響程序運行。(01-6)SubtestFullScreen()MsgBox"運行后將Excel的顯示模式設置為全屏幕"Application.DisplayFullScreen=TrueMsgBox"恢復為原來的狀態(tài)"Application.DisplayFullScreen=FalseEndSub(01-7)SubExcelStartfolder()MsgBox"Excel啟動的文件夾路徑為:"&Chr(10)&Application.StartupPathEndSub(01-8)示例01-09:打開最近使用過的文檔
示例01-10:打開文件(FindFile方法)
示例01-11:文件對話框操作(FileDialog屬性)SubOpenRecentFiles()MsgBox"顯示最近使用過的第三個文件名,并打開該文件"MsgBox"最近使用的第三個文件的名稱為:"&Application.RecentFiles(3).NameApplication.RecentFiles(3).OpenEndSub(01-9)SubFindFileOpen()OnErrorResumeNextMsgBox"請打開文件",vbOKOnly+vbInformation,"打開文件"IfNotApplication.FindFileThenMsgBox"文件未找到",vbOKOnly+vbInformation,"打開失敗"EndIfEndSub示例說明:本示例將顯示“打開”文件對話框,若用戶未打開文件(即點擊“取消”按鈕),則會顯示“打開失敗”信息框。示例中使用了FindFile方法,用來顯示“打開”對話框并讓用戶打開一個文件。如果成功打開一個新文件,則該值為True。如果用戶取消了操作并退出該對話框,則該值為False。(01-10)SubUseFileDialogOpen()DimlngCountAsLong'開啟"打開文件"對話框WithApplication.FileDialog(msoFileDialogOpen).AllowMultiSelect=True.Show'顯示所選的每個文件的路徑ForlngCount=1To.SelectedItems.CountMsgBox.SelectedItems(lngCount)NextlngCountEndWithEndSub示例說明:本示例顯示“打開文件”對話框,當用戶在其中選擇一個或多個文件后,將依次顯示每個文件的路徑。其中,F(xiàn)ileDialog屬性返回打開和保存對話框中一系列對象的集合,您可以對該集合對象的屬性進行進一步的設置,如上例中的AllowMultiSelect屬性設置為True將允許用戶選擇多個文件。(01-11)示例01-12:保存Excel的工作環(huán)境
示例01-13:改變Excel工作簿名字(Caption屬性)
示例01-14:使用InputBox方法
示例01-15:設置頁邊距(CentimetersToPoints方法)
示例01-16:使用Windows的計算器(ActivateMicrosoftApp方法)Sub保存Excel的工作環(huán)境()MsgBox"將Excel的工作環(huán)境保存到D:\ExcelSample\中"Application.SaveWorkspace"D:\ExcelSample\Sample"EndSub示例說明:運行本程序后,將工作簿以帶后綴名.xlw保存到D盤的ExcelSample文件夾中,生成的文件全名為Sample.xlw。當改變工作簿并保存時,Excel會詢問是覆蓋原文件還是保存副本。(01-12)SubSetCaption()Application.Caption="MyExcelBook"EndSub示例說明:運行本程序后,將工作簿左上角Excel圖標右側的“MicrosoftExcel”改為“MyExcelBook”(01-13)SubSampleInputBox()DimvInputvInput=InputBox("請輸入用戶名:","獲取用戶名",Application.UserName)MsgBox"您好!"&vInput&".很高興能認識您.",vbOKOnly,"打招呼"EndSub(01-14)SubSetLeftMargin()MsgBox"將工作表Sheet1的左頁邊距設為5厘米"Worksheets("Sheet1").PageSetup.LeftMargin=Application.CentimetersToPoints(5)EndSub(01-15)SubCallCalculate()Application.ActivateMicrosoftAppIndex:=0EndSub示例說明:運行本程序后,將調用Windows的計算器。(01-16)示例01-17:在程序中運行另一個宏(Run方法)
示例01-18:在指定的時間執(zhí)行宏(OnTime方法)
示例01-19:暫時停止宏運行(Wait方法)
示例01-20:按下指定的按鍵后執(zhí)行程序(OnKey方法)SubrunOtherMacro()ExcelVBA>>ExcelVBA編程入門范例MsgBox"本程序先選擇A1至C6單元格區(qū)域后執(zhí)行DrawLine宏"ActiveSheet.Range("A2:C6").SelectApplication.Run"DrawLine"EndSub(01-17)SubAfterTimetoRun()MsgBox"從現(xiàn)在開始,10秒后執(zhí)行程序「testFullScreen」"Application.OnTimeNow+TimeValue("00:00:10"),"testFullScreen"EndSub示例說明:運行本程序后,在10秒后將執(zhí)行程序testFullScreen。(01-18)SubStop5sMacroRun()DimSetTimeAsDateMsgBox"按下「確定」,5秒后執(zhí)行程序「testFullScreen」"SetTime=DateAdd("s",5,Now())Application.WaitSetTimeCalltestFullScreenEndSub示例說明:運行本程序后,按下彈出的提示框中的“確定”按鈕,等待5秒后執(zhí)行另一程序testFullScreen。。(01-19)SubPressKeytoRun()MsgBox"按下Ctrl+D后將執(zhí)行程序「testFullScreen」"Application.OnKey"^0060w0q","testFullScreen"EndSub[示例01-20-2]SubResetKey()MsgBox"恢復原來的按鍵狀態(tài)"Application.OnKey"^csyq6eu"EndSub示例說明:Onkey方法的作用主要是指定特定的鍵,當按下指定的鍵時運行相應的宏程序,或者按下指定的鍵時,使Excel屏蔽特定的功能。
(01-20)示例01-21:重新計算工作簿
示例01-22:控制函數(shù)重新計算(Volatile方法)
示例01-23:利用工作表函數(shù)(WorksheetFunction屬性)SubCalculateAllWorkbook()Application.CalculateEndSub示例說明:當工作簿的計算模式被設置為手動模式后,運用Calculate方法可以重新計算所有打開的工作簿、工作簿中特定的工作表或者工作表中指定的單元格區(qū)域。[示例01-21-2]SubCalculateFullSample()IfApplication.CalculationVersion<>Workbooks(1).CalculationVersionThenApplication.CalculateFullEndIfEndSub示例說明:本示例先將當前MicrosoftExcel的版本與上次計算該工作簿的Excel版本進行比較,如果兩個版本不同,則對所有打開工作簿中的數(shù)據(jù)進行一次完整計算。其中,CalculationVersion屬性返回工作簿的版本信息。
(01-21)FunctionNonStaticRand()'當工作表中任意單元格重新計算時本函數(shù)更新Application.VolatileTrueNonStaticRand=Rnd()EndFunction示例說明:本示例摸仿Excel中的Rand()函數(shù),當工作表單元格發(fā)生變化時,都會重新計算該函數(shù)。在例子中,使用了Volatile方法,強制函數(shù)進行重新計算,即無論何時重新計算工作表,該函數(shù)都會重新計算。(01-22)SubWorksheetFunctionSample()DimmyRangeAsRange,answerSetmyRange=Worksheets("Sheet1").Range("A1:C10")answer=Application.WorksheetFunction.Min(myRange)MsgBoxanswerEndSub示例說明:本示例獲取工作表Sheet1中單元格區(qū)域A1:C10中的最小值,使用了工作表函數(shù)Min()。一般,使用WorksheetFunction屬性引用工作表函數(shù),但如果VBA自帶有實現(xiàn)相同功能的函數(shù),則直接使用該函數(shù),否則會出現(xiàn)錯誤。
(01-23)示例01-24:獲取重疊區(qū)域(Intersect方法)
示例01-25:獲取路徑分隔符(PathSeparator屬性)
示例01-26:快速移至指定位置(Goto方法)
示例01-27:顯示內置對話框(Dialogs屬性)
示例01-28:退出Excel(SendKeys方法)SubIntersectRange()DimrSectAsRangeWorksheets("Sheet1").ActivateSetrSect=Application.Intersect(Range("rg1"),Range("rg2"))IfrSectIsNothingThenMsgBox"沒有交叉區(qū)域"ElserSect.SelectEndIfEndSub示例說明:本示例在工作表Sheet1中選定兩個命名區(qū)域rg1和rg2的重疊區(qū)域,如果所選區(qū)域不重疊,則顯示一條相應的信息。其中,Intersect方法返回一個Range對象,代表兩ExcelVBA>>ExcelVBA編程入門范例個或多個范圍重疊的矩形區(qū)域。(01-24)SubGetPathSeparator()MsgBox"路徑分隔符為"&Application.PathSeparatorEndSub示例說明:本示例使用PathSeparator屬性返回路徑分隔符(“\”)。(01-25)SubGotoSample()Application.GotoReference:=Worksheets("Sheet1").Range("A154"),_scroll:=TrueEndSub示例說明:本示例運行后,將當前單元格移至工作表Sheet1中的單元格A154。(01-26)SubDialogSample()Application.Dialogs(xlDialogOpen).ShowEndSub示例說明:本示例顯示Excel的“打開”文件對話框。其中,Dialogs屬性返回的集合代表所有的Excel內置對話框。(01-27)SubSendKeysSample()Application.SendKeys("%fx")EndSub示例說明:本示例使用SendKeys方法退出Excel,若未保存,則會彈出提示對話框并讓用戶作出相應的選擇。SendKeys方法的作用是摸擬鍵盤輸入,如例中的“%fx”表示在Excel中同時按下Alt、F和X三個鍵。(01-28)第二章窗口(Window對象)基本操作應用示例
示例02-01:激活窗口(Activate方法)Window對象代表一個窗口,約有48個屬性和14個方法,能對窗口特性進行設置和操作。Window對象是Windows集合中的成員,對于Application對象來說,Windows集合包含該應用程序中的所有窗口;對于Workbook對象來說,Windows集合只包含指定工作簿中的窗口。下面介紹一些示例,以演示和說明Window對象及其屬性和方法的運用。SubSelectWindow()DimiWinAsLong,iAsLong,bWinMsgBox"依次切換已打開的窗口"iWin=Windows.CountMsgBox“您已打開的窗口數(shù)量為:”&iWinFori=1ToiWinWindows(i).ActivatebWin=MsgBox("您激活了第"&i&"個窗口,還要繼續(xù)嗎?",vbYesNo)IfbWin=vbNoThenExitSubNextiEndSub示例02-02:窗口狀態(tài)(WindowState屬性)示例02-02-01]SubWindowStateTest()MsgBox"當前活動工作簿窗口將最小化"Windows(1).WindowState=xlMinimizedMsgBox"當前活動工作簿窗口將恢復正常"Windows(1).WindowState=xlNormalMsgBox"當前活動工作簿窗口將最大化"Windows(1).WindowState=xlMaximizedEndSub示例說明:使用WindowState屬性可以返回或者設置窗口的狀態(tài)。示例中,常量xlMinimized、xlNormal和xlMaximized分別代表窗口不同狀態(tài)值,Windows(1)表示當前活動窗口。可以使用Windows(index)來返回單個的Window對象,其中的index為窗口的名稱或編號,活動窗口總是Windows(1)。[示例02-02-02]SubtestWindow()'測試Excel應用程序窗口狀態(tài)MsgBox"應用程序窗口將最大化"Application.WindowState=xlMaximizedCalltestWindowStateMsgBox"應用程序窗口將恢復正常"Application.WindowState=xlNormalExcelVBA>>ExcelVBA編程入門范例MsgBox"應用程序窗口已恢復正常"'測試活動工作簿窗口狀態(tài)MsgBox"當前活動工作簿窗口將最小化"ActiveWindow.WindowState=xlMinimizedCalltestWindowStateMsgBox"當前活動工作簿窗口將最大化"ActiveWindow.WindowState=xlMaximizedCalltestWindowStateMsgBox"當前活動工作簿窗口將恢復正常"ActiveWindow.WindowState=xlNormalCalltestWindowStateMsgBox"應用程序窗口將最小化"Application.WindowState=xlMinimizedCalltestWindowStateEndSubSubtestWindowState()SelectCaseApplication.WindowStateCasexlMaximized:MsgBox"應用程序窗口已最大化"CasexlMinimized:MsgBox"應用程序窗口已最小化"CasexlNormal:SelectCaseActiveWindow.WindowStateCasexlMaximized:MsgBox"當前活動工作簿窗口已最大化"CasexlMinimized:MsgBox"當前活動工作簿窗口已最小化"CasexlNormal:MsgBox"當前活動工作簿窗口已恢復正常"EndSelectEndSelectEndSub示例說明:本示例有兩個程序,其中testWindow()是主程序,調用子程序textWindowState(),演示了應用程序窗口和工作簿窗口的不同狀態(tài)。當前活動窗口一般代表當前活動工作簿窗口,讀者可以在VBE編輯器中按F8鍵逐語句運行testWindow()程序,觀察Excel應用程序及工作簿窗口的不同狀態(tài)。此外,在子程序中,還運用了嵌套的SelectCase結構。[示例02-02-03]SubSheetGradualGrow()DimxAsIntegerWithActiveWindow.WindowState=xlNormal.Top=1.Left=1.Height=50.Width=50Forx=50ToApplication.UsableHeight.Height=xhttp://NextxForx=50ToApplication.UsableWidth.Width=xNextx.WindowState=xlMaximizedEndWithEndSub示例說明:本示例將動態(tài)演示工作簿窗口由小到大直至最大化的變化過程。在運行程序時,您可以將VBE窗口縮小,從而在工作簿中查看動態(tài)效果,也可以在Excel中選擇菜單中的宏命令執(zhí)行以查看效果。示例02-03:切換顯示工作表元素[示例02-03-01]SubtestDisplayHeading()MsgBox“切換顯示/隱藏行列標號”ActiveWindow.DisplayHeadings=NotActiveWindow.DisplayHeadingsEndSub示例說明:本示例切換是否顯示工作表中的行列標號。運行后,工作表中的行標號和列標號將消失;再次運行后,行列標號重新出現(xiàn),如此反復。您也可以將該屬性設置為False,以取消行列標號的顯示,如ActiveWindow.DisplayHeadings=False;而將該屬性設置為True,則顯示行列標號。[示例02-03-02]SubtestDisplayGridline()MsgBox“切換顯示/隱藏網(wǎng)格線”ActiveWindow.DisplayGridlines=NotActiveWindow.DisplayGridlinesEndSub示例說明:本示例切換是否顯示工作表中的網(wǎng)格線。運行后,工作表中的網(wǎng)格線消失,再次運行后,網(wǎng)格線重新出現(xiàn),如此反復。您也可以將該屬性設置為False,以取消網(wǎng)格線顯示,如ActiveWindow.DisplayGridlines=False;而將該屬性設置為True,則顯示網(wǎng)格線。[示例02-03-03]SubDisplayHorizontalScrollBar()MsgBox“切換顯示/隱藏水平滾動條”ActiveWindow.DisplayHorizontalScrollBar=_NotActiveWindow.DisplayHorizontalScrollBarEndSub示例說明:本示例切換是否顯示工作表中的水平滾動條。運行后,工作表中的水平滾動條消失,再次運行后,水平滾動條重新出現(xiàn),如此反復。您也可以將該屬性設置為False,以取消水平滾動條,如ActiveWindow.DisplayHorizontalScrollBar=False;而將該屬性設置為True,則顯示水平滾動條。同理,DisplayVerticalScrollBar屬性將用來設置垂直滾動條。[示例02-03-04]SubDisplayScrollBar()MsgBox"切換顯示/隱藏水平和垂直滾動條"Application.DisplayScrollBars=Not(Application.DisplayScrollBars)EndSub示例說明:本示例切換是否顯示工作表中的水平和垂直滾動條。運行后,工作表中的水平和垂直滾動條同時消失,再次運行后,水平和垂直滾動條重新出現(xiàn),如此反復。您也可以將該屬性設置為False,以取消水平和垂直滾動條顯示,如Application.DisplayScrollBars=False;而將該屬性設置為True,則顯示水平和垂直滾動條。示例02-04:顯示公式(DisplayFormulas屬性)
示例02-05:顯示/隱藏工作表標簽(DisplayWorkbookTabs屬性)
示例02-06:命名活動窗口(Caption屬性)
示例02-07:移動窗口到指定位置(ScrollRow屬性和ScrollColumn屬性)SubDisplayFormula()MsgBox“顯示工作表中包含公式的單元格中的公式”ActiveWindow.DisplayFormulas=TrueEndSub示例說明:本程序運行后,工作表中含有公式的單元格將顯示公式而不是數(shù)值。若要顯示數(shù)值,則將該屬性設置為False,或者,如果工作表中的公式顯示的是結果數(shù)值,則該屬性為False。(02-4)SubtestDisplayWorkbookTab()MsgBox“隱藏工作表標簽”ActiveWindow.DisplayWorkbookTabs=FalseEndSub示例說明:本程序運行后,工作表標簽消失。將該屬性設置為True,重新顯示工作表標簽。
(02-5)SubtestCaption()MsgBox"當前活動工作簿窗口的名字是:"&ActiveWindow.CaptionActiveWorkbook.Windows(1).Caption="我的工作簿"MsgBox"當前活動工作簿窗口的名字是:"&ActiveWindow.CaptionEndSub示例說明:本程序運行后,顯示當前活動工作簿窗口原先的名稱(即工作簿窗口未處于最大化狀態(tài)時,出現(xiàn)在窗口頂部標題欄中的文字),然后設置當前活動工作簿窗口名稱,即使用語句ActiveWorkbook.Windows(1).Caption="我的工作簿",最后顯示當前活動工作簿窗口的新名稱。改變窗口的標題并不會改變工作簿的名稱。
(02-6)SubtestScroll()MsgBox“將當前窗口工作表左上角單元格移至第10行第3列”ActiveWindow.ScrollRow=10ActiveWindow.ScrollColumn=3EndSub示例說明:本程序運行后,當前活動窗口左上角單元格為第10行第3列??梢酝ㄟ^設置這兩個屬性來移動窗口到指定的位置,也可以返回指定窗格或窗口最左上面的行號或列號。(02-7)示例02-08:調整窗口(EnableResize屬性)
示例02-09:拆分窗格
示例02-10:凍結窗格(FreezePanes屬性)SubtestResize()MsgBox“設置窗口大小不可調整”ActiveWindow.EnableResize=FalseEndSub示例說明:測試本程序前,將當前工作簿窗口恢復為正常狀態(tài)(即讓工作簿標題可見),運行程序后,當前工作簿窗口將不能調整其大小,右上角的最小化最大化按鈕將消失(即隱藏最大化和最小化按鈕)。該屬性設置為True,則能調整窗口大小。(02-8)[示例02-09-01]SubSplitWindow1()DimiRowAsLong,iColumnAsLongMsgBox"以活動單元格為基準拆分窗格"iRow=ActiveCell.RowiColumn=ActiveCell.ColumnWithActiveWindow.SplitColumn=iColumn.SplitRow=iRowEndWithMsgBox"恢復原來的窗口狀態(tài)"ActiveWindow.Split=FalseEndSub[示例02-09-02]SubSplitWindow()DimiRowAsLong,iColumnAsLongMsgBox"以活動單元格為基準拆分窗格"iRow=ActiveCell.RowiColumn=ActiveCell.ColumnWithActiveWindow.SplitColumn=iColumn.SplitRow=iRowEndWithMsgBox"恢復原來的窗口狀態(tài)"ActiveWindow.SplitColumn=0http://ActiveWindow.SplitRow=0EndSubSubtestFreezePane()(02-10)MsgBox“凍結窗格”ActiveWindow.FreezePanes=TrueEndSub示例說明:運行本程序后,將會凍結活動單元格所在位置上方和左側的單元格區(qū)域。將該屬性的值設置為False,將取消凍結窗格。示例說明:本示例演示了以活動單元格為基準拆分窗格。如果指定窗口被拆分,則Split屬性的值為True;設置該屬性的值為False則取消窗格拆分。也可以設置SplitColumn屬性和SplitRow屬性的值來取消窗格拆分。示例02-11:設置網(wǎng)格線顏色(GridlineColor屬性和GridlineColorIndex屬性)
示例02-12:設置工作表標簽區(qū)域寬度和水平滾動條寬度比例(TabRatio屬性)
示例02-13:設置激活窗口時運行的程序(OnWindow屬性)SubsetGridlineColor()DimiColorAsLongiColor=ActiveWindow.GridlineColorMsgBox"將活動窗口的網(wǎng)格線顏色設為紅色"ActiveWindow.GridlineColor=RGB(255,0,0)MsgBox"將活動窗口的網(wǎng)格線顏色設為藍色"ActiveWindow.GridlineColorIndex=5MsgBox“恢復為原來的網(wǎng)格線顏色”ActiveWindow.GridlineColorIndex=iColorEndSub示例說明:運行程序后,當前工作表窗口網(wǎng)格線將被設置為紅色。其中,GridlineColorIndex屬性可以用于返回或設置網(wǎng)格線的顏色,下面給出了默認調色板中顏色的編號值:
[小結]ActiveWindow屬性返回當前激活的工作簿窗口,可以用來設置工作表中的元素,也可以顯示特定的單元格,或者用來調整窗口的顯示比例,以及設置窗口。(02-11)Subtest()MsgBox"設置工作表標簽區(qū)域寬度為水平滾動條寬度的一半"ActiveWindow.TabRatio=0.5EndSub示例說明:TabRatio屬性返回或設置工作簿中工作表標簽區(qū)域的寬度與窗口水平滾動條的寬度比例(可為0到1之間的數(shù)字;默認值為0.6)。您可以改變上面程序中的數(shù)值進行測試。(02-12)SubtestRunProcedure()ThisWorkbook.Windows(1).OnWindow="test"EndSubSubtest()MsgBox"您可以使用本窗口了!"EndSub示例說明:本示例包括兩個程序,主程序為testRunProcedure(),運行后,每當激活該窗口時,將會運行test()程序。其中,OnWindow屬性返回或設置每當激活一個窗口時要運行的過程的名稱,如本例中的test()程序。(02-13)示例02-14:獲取指定窗口單元格區(qū)域地址(RangeSelection屬性)
示例02-15:返回指定窗口中所選擇的工作表(SelectedSheets屬性)
示例02-16:排列窗口(Arrange方法)SubtestRangeSelection()MsgBox"顯示所選單元格地址"MsgBoxActiveWindow.RangeSelection.AddressEndSub示例說明:本示例返回當前窗口中所選單元格區(qū)域的地址。RangeSelection屬性返回指定窗口的工作表中的選定單元格(即使指定工作表中有圖形對象處于活動狀態(tài),或者已選定圖形對象,仍返回在圖形對象被選定之前選定的單元格區(qū)域,這是該屬性與Selection屬性的區(qū)別)。(02-14)SubtestSelectedSheet()DimshAsWorksheetForEachshInActiveWorkbook.Windows(1).SelectedSheetsMsgBox"工作表"&sh.Name&"被選擇"NextEndSub示例說明:SelectedSheets屬性返回代表指定窗口中的所有選定工作表的集合。本示例中,如果您同時選擇了活動工作簿中的工作表Sheet1和Sheet2,那么運行程序后,將會顯示相應工作表被選擇的信息。(02-15)SubtestArrangeWindows()MsgBox"請確保應用程序至少含有兩個工作簿,這樣才能看出效果"MsgBox“窗口將平鋪顯示”Windows.ArrangeArrangeStyle:=xlArrangeStyleTiledMsgBox“窗口將層疊顯示”Windows.ArrangeArrangeStyle:=xlArrangeStyleCascadeMsgBox“窗口將水平排列顯示”Windows.ArrangeArrangeStyle:=xlArrangeStyleHorizontalMsgBox“窗口將垂直并排排列顯示”Windows.ArrangeArrangeStyle:=xlArrangeStyleVerticalEndSub示例說明:運行本程序后,將平鋪應用程序中的所有窗口。Arrange方法用于對屏幕上的窗口進行排列,其語法為expression.Arrange(ArrangeStyle,ActiveWorkbook,SyncHorizontal,SyncVertical),所有的參數(shù)均為可選參數(shù)。其中,參數(shù)ArrangeStyle代表排列樣式,可為以下常量:常量xlArrangeStyleTiled為缺省值,表示將平鋪窗口;常量xlArrangeStyleCascade表示將窗口進行層疊;常量xlArrangeStyleHorizontal表示將水平排列所有窗口;常量xlArrangeStyleVertical表示將垂直并排排列所有窗口。您可以在上面的程序中測試這些常量,以體驗效果。將參數(shù)ActiveWorkbook設置為True,則只對當前工作簿的可見窗口進行排列。如果為False,則對所有窗口進行排列。默認值為False。設置參數(shù)SyncHorizontal為True,在水平滾動時同步滾動當前工作簿的所有窗口;如果為False,則不同步滾動。設置參數(shù)SyncVertical為True,則在垂直滾動時同步滾動當前工作簿的所有窗口;如果為False,則不同步滾動,默認值為False。如果參數(shù)ActiveWorkbook為False或者省略,則參數(shù)SyncHorizontal和SyncVertical被忽略。(02-16)示例02-17:窗口尺寸(UsableHeight、UsableWidth、Height、Width屬性)示例02-18:水平排列兩個窗口
示例02-19:改變窗口的高度和寬度SubtestActiveWindowSize()MsgBox"當前窗口可用區(qū)域的高度為:"&ActiveWindow.UsableHeightMsgBox"當前窗口的高度為:"&ActiveWindow.HeightMsgBox"當前窗口可用區(qū)域的寬度為:"&ActiveWindow.UsableWidthMsgBox"當前窗口的寬度為:"&ActiveWindow.WidthEndSub(02-17)SubtestWindowArrange()DimahAsLong,awAsLongWindows.ArrangexlArrangeStyleTiledah=Windows(1).Heightaw=Windows(1).Width+Windows(2).WidthWithWindows(1).Width=aw.Height=ah/2.Left=0EndWith.Width=aw.Height=ah/2.Top=ah/2.Left=0EndWithEndSub示例說明:在運行本示例前,保證只打開了兩個工作簿口。運行本示例后,將水平排列第一個窗口和第二個窗口,即每個窗口占用可使用的垂直空間的一半,占用所有水平空間。其中,Top屬性表示從窗口頂端到可用區(qū)域頂端的距離,無法對最大化的窗口設置本屬性;Left屬性表示使用區(qū)域的左邊界至窗口左邊界的距離,如果窗口已最大化,則會返回一個負數(shù);如果該屬性被設置為0,則窗口的主邊框剛好在屏幕上可見。(02-18)SubChangeHeightAndWidth()DimiWinHeightAsLong,iWinWidthAsLongActiveWindow.WindowState=xlNormalMsgBox"將當前窗口的高度和寬度各減一半"iWinHeight=ActiveWindow.HeightiWinWidth=ActiveWindow.WidthActiveWindow.Height=iWinHeight/2ActiveWindow.Width=iWinWidth/2MsgBox"恢復原窗口大小"ActiveWindow.Height=iWinHeightActiveWindow.Width=iWinWidthEndSub示例說明:Height屬性和Width屬性必須在窗口處于正常顯示狀態(tài)(即不是最大化或最小化狀態(tài))時使用,否則會出錯。(02-19)示例02-20:移動窗口
示例02-21:并排比較窗口SubSetWindowPosition()DimiTopAsLong,iLeftAsLongMsgBox"將當前窗口向下移60,向右移90"ActiveWindow.WindowState=xlNormaliTop=ActiveWindow.TopiLeft=ActiveWindow.LeftActiveWindow.Top=iTop+60ActiveWindow.Left=iLeft+90MsgBox"恢復原來窗口的位置"ActiveWindow.Top=iTopActiveWindow.Left=iLeftEndSub示例說明:Top屬性和Left屬性必須在窗口處于正常顯示狀態(tài)(即不是最大化或最小化狀態(tài))時使用,否則會出錯。SubtestCompare()MsgBox"與工作簿Book2進行并排比較"Windows.CompareSideBySideWith"Book2"MsgBox"啟動窗口滾動功能,使兩個窗口同時滾動"Windows.SyncScrollingSideBySide=TrueMsgBox"將工作簿Book2最小化"Windows("Book2").WindowState=xlMinimizedMsgBox"重置并排比較顯示,恢復并排比較"Windows.ResetPositionsSideBySideMsgBox"關閉并排比較"ActiveWorkbook.Windows.BreakSideBySideEndSub示例說明:在運行本示例前,確保在本窗口外還打開了一個名為Book2的窗口,或者您打開了一個其它命名的窗口,相應將上面程序中的Book2更換為您的窗口名CompareSideBySideWith方法將以并排模式打開兩個窗口,其中一個是當前活動窗口,另一個就是該方法所指定的窗口,如本例中的Book2。SyncScrollingSideBySide屬性設置是否將兩個窗口的滾動保持同步,如果為True,在對文檔進行并排比較的同時啟用窗口內容的滾動功能。若為False,則在對文檔進行并排比較的同時禁用窗口內容的滾動功能。ResetPositionsSideBySide方法重置正在進行并排比較的兩個工作表窗口的位置,例如,如果用戶將正在進行比較的兩個工作表窗口中的其中一個窗框最小化或最大化,就可以使用ResetPositionsSideBySide方法重置顯示,以便這兩個窗口再次并排顯示。BreakSideBySide方法用來關閉并排比較。示例02-22:返回或設置窗口中顯示的視圖(View屬性)
示例02-23:返回窗口中可見單元格區(qū)域(VisibleRange屬性)
示例02-24:創(chuàng)建窗口(NewWindow方法)
示例02-25:設置窗口大小(Zoom屬性)SubtestView()MsgBox"將視圖切換為分頁預覽"ActiveWindow.View=xlPageBreakPreviewMsgBox"窗口視圖為:"&ActiveWindow.ViewMsgBox"將視圖恢復正常"ActiveWindow.View=xlNormalViewMsgBox"窗口視圖為:"&ActiveWindow.ViewEndSub(02-22)SubtestVisibleRange()MsgBox"當前窗口中共有"&Windows(1).VisibleRange.Cells.Count&"個單元格可見"EndSub示例說明:如果窗口中有部分行列的單元格可見,也包括在可見單元格區(qū)域中。(02-23)SubtestNewWindow()MsgBox"為活動窗口創(chuàng)建一個副本"ActiveWindow.NewWindowMsgBox"所創(chuàng)建窗口的窗口號為"&ActiveWindow.WindowNumberEndSub示例說明:本示例中,NewWindow方法為指定窗口(本例中為當前活動窗口)創(chuàng)建一個副本,然后顯示該副本窗口的窗口號。注意,窗口號與窗口索引(Index屬性)的不同,例如名稱為“Book1.xls:2”的窗口,其窗口號為2,而窗口索引為該窗口在Windows集合中的位置,可以為窗口名稱或編號。(02-24)SubtestWindowDisplaySize()MsgBox"將窗口大小設置為與選定區(qū)域相適應的大小"ActiveWindow.Zoom=TrueMsgBox"以雙倍大小顯示窗口"ActiveWindow.Zoom=200MsgBox"以正常大小顯示窗口"ActiveWindow.Zoom=100EndSub示例說明:Zoom屬性將以百分數(shù)的形式(100表示正常大小,200表示雙倍大小,以此類推)返回或設置窗口的顯示大小。如果本屬性為True,則可將窗口大小設置成與當前選定區(qū)域相適應的大小。本功能僅對窗口中當前的活動工作表起作用,若要對其他工作表使用本屬性,必須先激活該工作表。(02-25)示例02-26:激活窗口(ActivateNext方法和ActivatePrevious方法)
示例02-27:滾動窗口(LargeScroll方法和SmallScroll方法)[示例02-26-01]SubtestActivateWindow1()MsgBox"若已打開Book1.xls、Book2.xls和Book3.xls三個工作簿且Book1.xls為當前窗口"&Chr(10)&"則按Book3.xls-Book2.xls-Book1.xls依次激活窗口"ActiveWindow.ActivateNextMsgBox"激活工作簿:"&Windows(1).CaptionActiveWindow.ActivateNextMsgBox"激活工作簿:"&Windows(1).CaptionActiveWindow.ActivateNextMsgBox"激活工作簿:"&Windows(1).CaptionEndSub[[示例02-27-01]SubtestScroll1()MsgBox"將當前窗口向下滾動3頁并向右滾動1頁"ActiveWindow.LargeScrollDown:=3,ToRight:=1EndSub示例說明:LargeScroll方法將按頁滾動窗口的內容,其語法為expression.LargeScroll(Down,Up,ToRight,ToLeft),帶有4個可選的參數(shù),其中參數(shù)Down表示將窗口內容向下滾動的頁數(shù);參數(shù)Up表示將窗口內容向上滾動的頁數(shù);參數(shù)ToRight表示將窗口內容向右滾動的頁數(shù);參數(shù)ToLeft表示將窗口內容向左滾動的頁數(shù)。如果同時指定了Down和Up,窗口內容上下方向滾動的頁數(shù)由這兩個參數(shù)的差決定,例如,如果Down為3,Up為6,則窗口向上滾動三頁。如果同時指定了ToLeft和ToRight,窗口內容左右方向滾動的頁數(shù)由這兩個參數(shù)的差決定,例如,如果ToLeft為3,ToRight為6,則窗口向右滾動三頁。所有這四個參數(shù)都可以使用負數(shù)。[示例02-27-02]SubtestScroll2()MsgBox"將當前活動窗口向下滾動3行"ActiveWindow.SmallScrolldown:=3EndSub示例說明:SmallScroll方法按行或列滾動窗口,其語法為expression.SmallScroll(Down,Up,ToRight,ToLeft),帶有4個可選的參數(shù),其中參數(shù)Down表示將窗口內容向下滾動的行數(shù);參數(shù)Up表示將窗口內容向上滾動的列數(shù);參數(shù)ToRight表示將窗口內容向右滾動的列數(shù);參數(shù)ToLeft表示將窗口內容向左滾動的列數(shù)。如果同時指定了Down和Up,則窗口內容滾動的行數(shù)由這兩個參數(shù)的差值決定,例如,如果Down為3,Up為6,則窗口內容向上滾動三行。如果同時指定了ToLeft和ToRight,則窗口內容滾動的列數(shù)由這兩個參數(shù)的差值決定,例如,如果ToLeft為3,ToRight為6,則窗口內容向右滾動三列。以上四個參數(shù)均可取負值。[示例02-26-02]SubtestActivateWindow2()MsgBox"若已打開Book1.xls、Book2.xls和Book3.xls三個工作簿且Book1.xls為當前窗口"&Chr(10)&"則按Book2.xls-Book3.xls-Book1.xls依次激活窗口"ActiveWindow.ActivatePreviousExcelVBA>>ExcelVBA編程入門范例MsgBox"激活工作簿:"&Windows(1).CaptionActiveWindow.ActivatePreviousMsgBox"激活工作簿:"&Windows(1).CaptionActiveWindow.ActivatePreviousMsgBox"激活工作簿:"&Windows(1).CaptionEndSub示例02-28:測試所選單元格寬度和高度
示例02-29:關閉窗口(Close方法)SubtestWidthOrHeight()DimlWinWidthAsLong,lWinHeightAsLongWithActiveWindowlWinWidth=.PointsToScreenPixelsX(.Selection.Width)lWinHeight=.PointsToScreenPixelsY(.Selection.Height)EndWithhttp://MsgBox"當前選定單元格寬度為:"&lWinWidth&Chr(10)&_"當前選定單元格高度為:"&lWinHeightEndSubSubCloseWindow()MsgBox"關閉當前窗口"ActiveWindow.CloseEndSub示例說明:本示例運行后,將關閉當前窗口。如果當前窗口未保存,則會彈出詢問是否保存的消息框供選擇第三章工作簿(Workbook)基本操作應用示例
示例03-01:創(chuàng)建工作簿(Add方法)
示例03-02:添加并保存新工作簿
示例03-03:打開工作簿(Open方法)[示例03-01-01]SubCreateNewWorkbook1()MsgBox"將創(chuàng)建一個新工作簿."Workbooks.AddEndSubSubAddSaveAsNewWorkbook()DimWkAsWorkbookSetWk=Workbooks.AddApplication.DisplayAlerts=FalseWk.SaveAsFilename:="D:/SalesData.xls"EndSub示例說明:本示例使用了Add方法和SaveAs方法,添加一個新工作簿并將該工作簿以文件名SalesData.xls保存在D盤中。其中,語句Application.DisplayAlerts=False表示禁止彈出警告對話框。[示例03-03-01]SubopenWorkbook1()Workbooks.Open"<需打開文件的路徑>\<文件名>"EndSub示例說明:代碼中的<>里的內容需用所需打開的文件的路徑及文件名代替。Open方法共有15個參數(shù),其中參數(shù)FileName為必需的參數(shù),其余參數(shù)可選。[示例03-03-02]SubopenWorkbook2()DimfnameAsStringMsgBox"將D盤中的<測試.xls>工作簿以只讀方式打開"fname="D:\測試.xls"Workbooks.OpenFilename:=fname,ReadOnly:=TrueEndSub[示例03-01-02]SubCreateNewWorkbook2()DimwbAsWorkbookDimwsAsWorksheetDimiAsLongMsgBox"將創(chuàng)建一個新工作簿,并預設工作表格式."Setwb=Workbooks.AddSetws=wb.Sheets(1)ws.Name="產品匯總表"ws.Cells(1,1)="序號"ws.Cells(1,2)="產品名稱"ws.Cells(1,3)="產品數(shù)量"Fori=2To10ws.Cells(i,1)=i-1NextiEndSub示例03-04:將文本文件導入工作簿中(OpenText方法)
示例03-05:保存工作簿(Save方法)
示例03-06:保存工作簿(SaveAs方法)SubTextToWorkbook()'本示例打開某文本文件并將制表符作為分隔符對此文件進行分列處理轉換成為工作表Workbooks.OpenTextFilename:="<文本文件所在的路徑>/<文本文件名>",_DataType:=xlDelimited,Tab:=TrueEndSub示例說明:代碼中的<>里的內容需用所載入的文本文件所在路徑及文件名代替。OpenText方法的作用是導入一個文本文件,并將其作為包含單個工作表的工作簿進行分列處理,然后在此工作表中放入經過分列處理的文本文件數(shù)據(jù)。該方法共有18個參數(shù),其中參數(shù)FileName為必需的參數(shù),其余參數(shù)可選。[示例03-06-01]SubSaveWorkbook1()MsgBox"將工作簿以指定名保存在默認文件夾中."ActiveWorkbook.SaveAs"<工作簿名>.xls"EndSub示例說明:SaveAs方法相當于“另存為……”命令,以指定名稱保存工作簿。該方法有12個參數(shù),均為可選參數(shù)。如果未指定保存的路徑,那么將在默認文件夾中保存該工作簿。如果文件夾中該工作簿名已存在,則提示是否替換原工作簿。[示例03-06-02]SubSaveWorkbook2()DimoldNameAsString,newNameAsStringDimfolderNameAsString,fnameAsStringoldName=ActiveWorkbook.NamenewName="new"&oldNameMsgBox"將<"&oldName&">以<"&newName&">的名稱保存"folderName=Application.DefaultFilePathfname=folderName&"\"&newNameActiveWorkbook.SaveAsfnameEndSub示例說明:本示例將當前工作簿以一個新名(即new加原名)保存在默認文件夾中。[示例03-06-03]SubCreat
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 環(huán)境監(jiān)測治理保障責任承諾書9篇
- 動物王國的神秘冒險童話故事作文13篇范文
- 拆遷不給合同范本
- 合作報價合同范本
- 大學化妝合同范本
- 固定工的合同范本
- 拆廠廢鋼合同范本
- 培訓落地合同范本
- 培訓協(xié)辦合同協(xié)議
- 基地轉讓合同范本
- 2026年湖南鐵道職業(yè)技術學院單招職業(yè)技能考試必刷測試卷附答案
- 2025年重慶市大渡口區(qū)事業(yè)單位考試試題
- 管道施工圍擋施工方案
- 城市綠化生態(tài)修復項目實施方案
- 西藏酥油茶的課件
- 安裝預制檢查井施工方案
- 急性心肌梗死治療課件
- 樹木砍伐安全培訓課件
- 風電場冬季防火知識培訓課件
- 中國郵政2025南通市秋招綜合管理職能類崗位面試模擬題及答案
- 源網(wǎng)荷儲一體化項目并網(wǎng)調試實施方案
評論
0/150
提交評論