2020国产成人精品视频,性做久久久久久久久,亚洲国产成人久久综合一区,亚洲影院天堂中文av色

分享

第13章 Excel常用對象

 昵稱380475 2011-02-16
 
第13章 Excel常用對象
 
  上一章介紹了Excel的對象模型,從Excel對象模型可以看出,Excel 2007提供了200多種對象。其實(shí)Excel最常用的對象只有幾個,如Application對象、Workbook工作簿對象、Worksheet工作表對象、Range單元格區(qū)域?qū)ο螅约癈hart圖表對象等。本章介紹這些對象的使用方法。
 
  13.1 Application對象
  Application對象代表整個Excel應(yīng)用程序,在Excel對象模型中處于最頂層。使用Application對象可控制應(yīng)用程序范圍的設(shè)置和選項(xiàng)。
  13.1.1 Application對象的用途
  Application對象主要用在以下幾方面。
  ●控制整個應(yīng)用程序,對Application對象的相關(guān)屬性進(jìn)行設(shè)置,如設(shè)置應(yīng)用程序標(biāo)題、工具欄和菜單欄等的狀態(tài)。如下面的代碼將Excel標(biāo)題設(shè)置為“我的應(yīng)用程序”:
  Application.Caption?。健?#8220;我的應(yīng)用程序”
  ●返回處于活動狀態(tài)的對象,如ActiveCell,ActiveSheet等。
  ●調(diào)用Excel的內(nèi)部函數(shù)。
  Excel內(nèi)置了豐富的函數(shù),充分利用這些函數(shù),可減少代碼的編寫工作量,對這些函數(shù)的引用可通過Application對象進(jìn)行。下面的代碼將對指定單元格求和:
  lngSum = Application.Sum(ActiveSheet.Range("A1:E10"))
  13.1.2 設(shè)置Excel主窗口標(biāo)題欄
  使用Application對象的Caption屬性,可改變Excel主窗口標(biāo)題欄中顯示的名稱。一般將這類代碼放在工作簿的Open事件中,打開工作簿即可將其設(shè)置為需要的名稱。例如,以下代碼將標(biāo)題欄設(shè)置為“我的Excel應(yīng)用程序”:
  Private Sub Workbood_Open()
    Application.Caption?。健?#8220;我的Excel應(yīng)用程序”
  End Sub
  關(guān)閉Excel,再重新打開包含以上代碼的Excel工作簿(或在VBE環(huán)境中執(zhí)行以上代碼),可得到如圖13-1所示的標(biāo)題欄名稱。
      
  注意:Caption屬性是針對整個Excel應(yīng)用程序的設(shè)置。關(guān)閉包含以上代碼的工作簿,Excel的標(biāo)題欄仍然將顯示修改后的標(biāo)題名稱。
  13.1.3 顯示或關(guān)閉編輯欄
  通過以下屬性可控制編輯欄、滾動條、狀態(tài)欄等窗體部件的顯示狀態(tài):
  ●DisplayFormulaBar屬性,如果該屬性值為True,則顯示編輯欄;
  ●DisplayScrollBars屬性,如果該屬性值為True,則滾動條在所有工作簿中顯示;
  ●DisplayStatusBar屬性,如果該屬性值為True,則顯示狀態(tài)欄。
  在“Excel選項(xiàng)”對話框中可設(shè)置Excel的常用選項(xiàng),通過VBA編寫代碼,也可設(shè)置這些選項(xiàng)。例如,以下程序?qū)⒃O(shè)置編輯欄、滾動條和狀態(tài)欄顯示與否。
  
  13.1.4 關(guān)閉屏幕更新
  在默認(rèn)情況下,Excel每執(zhí)行一個操作就會更新一次屏幕的顯示,以顯示出執(zhí)行的結(jié)果。如果需要用VBA代碼一次執(zhí)行多步操作,關(guān)閉屏幕更新可加快程序的執(zhí)行速度。這樣將看不到程序的執(zhí)行過程,但程序的執(zhí)行速度加快了。將ScreenUpdating屬性設(shè)置為True,將啟用屏幕更新;設(shè)置為False,將關(guān)閉屏幕更新。
  注意:當(dāng)代碼結(jié)束運(yùn)行后,就將ScreenUpdating屬性設(shè)置為True。
  例如,以下示例演示將屏幕更新關(guān)閉以后,系統(tǒng)如何加快代碼的執(zhí)行速度。本例將工作表Sheet1上的1~10 000行進(jìn)行隔行隱藏,將程序執(zhí)行時間保存在數(shù)組中。第一次,示例隱藏行時,屏幕更新是打開的;第二次時,屏幕更新是關(guān)閉的。
  
  
  程序的執(zhí)行結(jié)果如圖13-2所示。由和程序結(jié)果可以看出,將ScreenUpdating屬性設(shè)置為True時,程序執(zhí)行的時間為41秒;而將ScreenUpdating屬性設(shè)置為False時,程序執(zhí)行的時間約為3秒。由此可以看出程序執(zhí)行速度的差別為10多倍。
             
  13.1.5 設(shè)置狀態(tài)欄
  通過StatusBar屬性可返回或設(shè)置狀態(tài)欄中的文字,而DisplayStatusBar屬性可控制是否顯示狀態(tài)欄。下面的代碼首先保存DisplayStatusBar屬性的當(dāng)前狀態(tài),然后將該屬性設(shè)置為True以顯示狀態(tài)欄,最后在狀態(tài)欄中顯示出提示文字。
  
  執(zhí)行以上代碼,狀態(tài)欄的顯示如圖13-3所示?!?/div>
         
  一般在執(zhí)行完相應(yīng)的操作后,可使用以下代碼將狀態(tài)欄還原:
  Application.StatusBar?。健alse
  Application.DisplayStatusBar?。健ldStatusBar
  13.1.6 查看模板文件的路徑
  通過TemplatePath屬性可返回Excel模板文件存儲的路徑。例如以下的代碼可返回Excel模板文件保存的位置。
  Sub 模板位置()
    MsgBox Application.TemplatesPath
  End Sub
  過程執(zhí)行的結(jié)果如圖13-4所示。
  
  13.1.7 最大化Excel窗口
  通過WindowState屬性可查詢Excel窗口的狀態(tài),也可設(shè)置其狀態(tài)。例如以下代碼可將Excel窗口最大化:
  Sub 最大化()
    Application.WindowState = xlMaximized
  End Sub
  WindowState屬性可設(shè)置為以下三個值之一:
  ●xlMaximized,最大化窗口;
  ●xlMinimized,最小化窗口;
  ●xlNormal,正常窗口。
  13.1.8 獲取對象的引用
  許多Application對象的屬性用來返回其他的對象,主要有以下幾種。
  1. ActiveCell屬性
  返回一個Range對象,它代表活動窗口(最上方的窗口)或指定窗口中的活動單元格。如果窗口中沒有顯示工作表,此屬性無效。
  注意:請仔細(xì)區(qū)分活動單元格和選定區(qū)域:活動單元格為選定區(qū)域內(nèi)部的一個單元格;而選定區(qū)域可以包含多個單元格,但只有一個單元格為活動單元格。
  下列表達(dá)式都返回活動單元格,并且都是等效的。
  ActiveCell
  Application.ActiveCell
  ActiveWindow.ActiveCell
  Application.ActiveWindow.ActiveCell
  2. ActiveChart屬性
  返回一個Chart對象,它代表活動圖表(嵌入式圖表或圖表工作表)。嵌入式圖表在被選中或激活時被認(rèn)為是活動的。當(dāng)圖表的處于活動狀態(tài)時,此屬性返回“Nothing”。如果不指定對象識別符,此屬性返回活動工作簿中的活動圖表。
  3. ActiveSheet屬性
  返回一個對象,它代表活動工作簿中或指定的窗口或工作簿中的活動工作表(最上面的工作表)。如果沒有活動的工作表,則返回“Nothing”。如果不指定對象識別符,則此屬性返回活動工作簿中的活動工作表。如果某個工作簿出現(xiàn)在若干個窗口,那么該工作簿的ActiveSheet屬性在不同窗口中可能不同。
  4.ActiveWindow屬性
  返回一個Window對象,該對象表示活動窗口(頂部窗口)。如果沒有打開的窗口,則返回“Nothing”。
  5.ActivWorkbook屬性
  返回一個Workbook對象,該對象表示活動窗口(頂部窗口)中的工作簿。如果沒能打開的窗口,以及“信息”窗口或“剪貼板”窗口為活動窗口,則返回“Nothing”。
  6. Cells屬性
  返回一個Range對象,它代表活動工作表中的所有列。如果活動文檔不是工作表,則此屬性無效。因?yàn)镮tem屬性是Range對象的默認(rèn)屬性,所以可以在Cells關(guān)鍵字后面緊接著指定行和列的索引。在不使用對象識別符的情況下,使用此屬性將返回一個Range對象,它代表活動工作表中所有的單元格。
  7. Selection屬性
  Selection屬性為Application對象返回活動窗口中選定的對象。返回的對象類型取決于當(dāng)前所選內(nèi)容(例如,如果選擇了單元格,此屬性將返回Range對象);如果未選擇任何內(nèi)容,Selection屬性將返回“Nothing”。
  8. Sheets屬性
  返回一個Sheets集合,它代表活動工作簿中所有的工作表。
  9. Workbooks屬性
  返回一個Workbooks集合,該集合表示所有打開的工作簿。
  10. WorksheetFunction屬性
  可用作從Visual Basic中調(diào)用的Excel工作表函數(shù)的容器。
  例如,下列代碼顯示給區(qū)域“A1:C10”應(yīng)用Min工作表函數(shù)的結(jié)果。
  Set myRange = Worksheets("Sheet1"),Range("A1:C10")
  answer = Application.WorksheetFunction.Min(myRange)
  MsgBox answer
  程序中也可省略WorksheetFunction,直接寫為Application.Min的形式。
  13.1.9 重新計算
  使用Calculate方法可計算所有打開的工作簿、工作簿的某個特定工作表或工作表指定區(qū)域中的單元格,例如以下代碼:
       
  注意:使用CalculateFull方法將強(qiáng)制對所有打開工作簿中的數(shù)據(jù)進(jìn)行完整計算。
  
  13.1.10 將R1C1轉(zhuǎn)換為A1樣式
  使用ConvertFormula方法可在A1和R1C1引用樣式之間轉(zhuǎn)換,在相對和絕對引用之間轉(zhuǎn)換公式中的單元格引用,或者同時進(jìn)行這兩種轉(zhuǎn)換。其語法格式如下:
  Application.ConvertFormula(公式字符串,原引用樣式,返回引用樣式,轉(zhuǎn)換類型,關(guān)聯(lián)單元格)
  下面的代碼把包含R1C1樣式引用SUM公式轉(zhuǎn)換為包含A1樣式引用的等價公式,然后顯示轉(zhuǎn)換結(jié)果。
  
  程序執(zhí)行結(jié)果如圖13-5所示。
        
  13.1.11 快速跳轉(zhuǎn)
  使用Goto方法可選定任意工作簿中的任意區(qū)域,并且如果該工作簿未處于活動狀態(tài),就激活該工作簿。通過該方法的Scroll屬性可讓窗口滾動到目標(biāo)位置。例如以下代碼將選擇“Sheet2”工作表中的“A1:A10”區(qū)域,并將該區(qū)域滾動到當(dāng)前窗口中顯示。
  Sub 快速跳轉(zhuǎn)()
    Application.Goto   Reference:=Worksheets("Sheet2").Range("A1:A10")、Scroll:=True
  End Sub
 
  13.1.12 定時執(zhí)行過程
  使用OnTime方法可安排一個過程在將來的特定時間運(yùn)行(即可以是具體指定的某個時間,也可以是指定的一段時間之后)。如設(shè)置20秒后運(yùn)行過程“Test1”可使用以下代碼:
  Application.OnTime Now + TimeValue("00:00:20")、"Test1"
  早上8點(diǎn)整運(yùn)行過程“Test2”:
  Application.OnTime TimeValue("08:00:00")、"Test2"
  要撤銷運(yùn)行OnTime設(shè)置的過程,需要將Schedule參數(shù)設(shè)置為Flase。如撤銷前一個表達(dá)式對OnTime的設(shè)置的代碼如下:
  Application.OnTime EarliestTime:=TimeValue("08:00:00")、Procedure:="Test2"、Schedule:=False
  技巧:如果不一個參數(shù)在調(diào)用方法庫中預(yù)先定義了其名稱,那么這個參數(shù)稱為命名參數(shù)。對命名參數(shù),不必拘泥于語法所規(guī)定順序來提供值,而可按任何順序用命名參數(shù)分配值。例如,OnTime方法接受4個參數(shù),其格式如下:
  OnTime(EarliestTime,Procedure,LatestTime,Schedule)
  在對命名參數(shù)賦值時,可使用前面的語句取消OnTime設(shè)置的過程,也可以使用以下語句完成同樣的功能(將Schedule參數(shù)放在最前面):
  Application.OnTimeSchedule:=False,EarliestTime:=TimeValue("08:00:00:),Procedure:="Test2"
 
  13.1.13 合并區(qū)域
  使用Union方法可返回兩個或多個區(qū)域的合并區(qū)域。其語法格式如下:
  表達(dá)式.Union(Argl,Arg2,……,Arg30)
  使用該方法時,最少需要兩個Range對象區(qū)域作為參數(shù),最多可以合并30個Range對象區(qū)域。例如:
  Worksheets("Sheet1").Activate
  Set unRange = Application.Union(Range("A1:B5"),Range(D1:B5"))
  unRange.Formula?。健?=RAND()"
  以上代碼首先將單元格區(qū)域“A1:B5”和“D1:E5”合并為1個Range對象,再設(shè)置該區(qū)域?qū)ο笾懈鲉卧竦墓綖橐粋€隨機(jī)函數(shù)。執(zhí)行該部分代碼后,將在這20個單元格區(qū)域(單元格區(qū)域“A1:B5”和“D1:E5”共20個單元格)填充隨機(jī)數(shù)。
 
  13.2 Workbook對象
  Workbook工作簿對象位于Application對象的下一層次。一個工作簿對象就是一個Excel文件。工作表對象Worksheet,單元格區(qū)域?qū)ο驲ange和圖表對象Chart等都位于工作簿對象中。多個Workbook對象組成Workbooks集合。
  13.2.1 新建工作簿
  Workbooks集合包含了Excel應(yīng)用程序中當(dāng)前打開的所有WorkBook對象??梢允褂肳orkbooks集合創(chuàng)建新的工作簿,或關(guān)閉工作簿等。
  在VBA中創(chuàng)新的工作簿,可以使用Workbooks集合對象的Add方法。下面的代碼用于創(chuàng)建一個新工作簿。Excel自動將該工作簿命名為“BookN”,其中“N”是下一個可用的數(shù)字。新工作簿將成為活動工作簿。
  Sub AddOne
   Workbooks.Add
  End Sub
  創(chuàng)建新工作簿更好的方法是將其分配給一個對象變量,在程序中可通過該對象變量對工作簿進(jìn)行設(shè)置。使用對象變量可以很容易地控制新工作簿。例如,以下代碼就可完成工作簿的創(chuàng)建,并設(shè)置工作簿的相關(guān)屬性。
   Sub AddNew()
    n=Workbooks.Count
              Set NewBook = Workbooks.Add
    With NewBook
      .Title = "新工作簿" & n
     .SaveAs Filename:="新工作簿" & n & ".xlsx"
   End With
  End Sub
 
  13.2.2 打開工作簿
  用Open方法打開一個工作簿時,該工作簿將成為Workbooks集合的成員。下述代碼用于打開“D:\Excelvba2007\實(shí)例\第13章\常用對象.xlsm”工作簿:
  Sub OpenUp()
    Workbooks.Open("D:\Excelvba2007\實(shí)例\第13章\常用對象.xlsm")
  End Sub
  在更多的時候,打開工作簿時需要查找文件所在位置,這時可通過“打開”對話框來進(jìn)行查找,引用“打開”對話框的語法格式如下:
  Application.GetOpenFilename(FileFilter,FilterIndex,Title,ButtonText,MultiSelect)
  使用GetOpenFilename方法可返回選定的文件名或用戶輸入的名稱,返回的名稱可能包含路徑說明。如果用戶取消了對話框,則該值為False。使用實(shí)例如下:
  
  另外,Workbooks集合還提供了OpenDatabase,OpenText和OpenXML方法,分別用來打開數(shù)據(jù)庫、文本文件和XML數(shù)據(jù)文件。
  對于打開的工作簿,可使用Close方法關(guān)閉,且不退出Excel程序。如果某個打開的工作秒表改動,Excel將顯示底部是否保存更改的對話框和相應(yīng)提示。
 
  13.2.3 查看文檔屬性
  在Excel中,要查看和修改文檔的屬性可按以下步驟操作。
  步驟1 單擊“Office按鈕”打開下拉菜單。
  步驟2 選擇“準(zhǔn)備”│“屬性”命令,在Excel的功能區(qū)下方打開如圖13-6所示的“文檔屬性”面板,供用戶查看和修改。
            
  步驟3 單擊左上角“文檔屬性”標(biāo)簽,打開下拉菜單選擇“高級屬性”,打開如圖13-7所示的屬性窗口,在其“自定義”選項(xiàng)卡中可定義各種屬性值。
  以上是在Excel操作環(huán)境下操作的結(jié)果。在Excel程序開發(fā)中,也可使用VBA代碼控制并設(shè)置文檔的屬性值。使用Workbook對象的BuiltinDoc
umentProperties屬性返回一個DocunentProperties集合,該集合表示指定工作母虎所有內(nèi)置文檔屬性。
              
  例如,以下代碼在BuiltinDocumentProperties屬性的DocumentProperties集合中逐個讀出屬性,并將其屬性名稱和屬性值填寫到“Sheet1”工作表的第A,B兩列中。
  程序運(yùn)行結(jié)果如圖13-8所示。
      
 
  13.2.4 處理工作簿文件名
  使用Workbook對象的FullName屬性可返回工作簿的名稱(用字符串表示),包括其磁盤路徑。例如,以下代碼將顯示當(dāng)前活動工作簿的全名,掛靠該行代碼有可能顯示如圖13-9所示的對話框。
  如果只需要工作簿的文件名稱,而不需要磁盤路徑,可使用Workbook對象的Name屬性。
  
  13.2.5 處理命名單元格區(qū)域
  在Excel中,可使用行號列標(biāo)來引用單元格(如A1),也可對單元格區(qū)域進(jìn)行命名,然后在公式或VBA代碼中使用名稱來引用相關(guān)單元格。
  單元格區(qū)域的名稱定義保存在Name對象中。名稱可以是內(nèi)置名稱(如“Database”,“Print_Area”和“Auto_Open”)或自定義名稱。
  Name對象是Application,Workbook和Worksheet對象的Names集合的成員。使用Names(index)(其中index是名稱索引號或定義名稱)可返回一個Name對象。
  注意:這時的Name對象不是Workbook對象的Name屬性。
  可用Add方法創(chuàng)建名稱并將其添加到集合中。下面的語句創(chuàng)建一個新名稱,指向工作表Sheet1上單元格區(qū)域A1:C20。
  Name.Add Name:="test",RefersTo:="=sheet1!$a$1:$c$20"
  RefersTo參數(shù)必須以A1樣式表示法指定,包括必要時使用的美元符號($)。例如,如果在工作表Sheet1上選定了單元格A10:B10,然后又將RefersTo參數(shù)指定為“=Sheet1!A1:B1”而定義了一個名稱,那么該名稱實(shí)際上指向單元格區(qū)域A10:B10(因?yàn)橹付ǖ氖窍鄬σ茫?。若要指定絕對引用,應(yīng)當(dāng)為“=Sheet1!$A$1:$B$1"。
  例如,在一個“庫存管理系統(tǒng)”中,“商品信息”表中的數(shù)據(jù)不斷變化,如果需要對商品信息區(qū)域進(jìn)行命名,供其他表格使用,可使用以下代碼進(jìn)行定義:
  
  對于已定義Name的名稱,也可通過VBA代碼進(jìn)行修改。例如,在工作簿中已經(jīng)定義了一個Name,名稱為“NameTest1”,在“名稱管理器”中查看結(jié)果如圖13-10所示。
  執(zhí)行以上過程后,再在“公式”選項(xiàng)卡的“定義的名稱”組中單擊“名稱管理器”按鈕,打開“名稱管理器”對話框,可看到改名后的結(jié)果如圖13-11所示。
          
  13.2.6 設(shè)置工作簿密碼
  為了安全起見,有時需要為工作簿設(shè)置打開權(quán)限密碼。使用Workbook對象的Passwore屬性可獲取或設(shè)置該密碼。例如,以下代碼將提示用戶為工作簿設(shè)置一個密碼,然后保存并退出。
  Sub 設(shè)置密碼()
    ActiveWorkbook.Passwore?。健nputBox("輸入密碼:")
    ActiveWorkbook.Close
  End Sub
  執(zhí)行以上代碼后,將關(guān)閉當(dāng)前Excel工作簿。下次打開此工作簿時,將彈出如圖13-12所示的“密碼”對話框,要求用戶輸入正確的密碼才能打開工作簿。
  要取消工作簿的密碼,可設(shè)置其Password屬性為空字符串,代碼如下:
  ActiveWorkbook.Password?。健?"
也可通過單擊“Office”按鈕打開下拉菜單,從下拉菜單中選擇“準(zhǔn)備”│“加密文檔”命令,打開如圖13-13所示對話框,然后刪除其中的“密碼”字符即可。
                
  13.2.7 更名保存工作簿
  保存工作簿有兩種方式:一種是保存修改到原工作簿中;另一種是保存工作母虎另一個副本。使用Same方法可保存指定工作簿所做的更改。以下代碼用于保存所有打開的工作簿,然后關(guān)閉Excel。
  For Each?。鳌n Application.Workbooks
   ?。鳎甋ave
  Next w
  Application.Quit
  使用SaveAs方法可以將工作簿換名保存。例如,以下代碼用于新建一個工作簿,提示用戶輸入文件名,然后保存該工作簿。
  Set NewBook = Workbooks.Add
        Do
              fName = Application.GetSaveAsFilename
  Loop Until fName <> False
  NewBook.SaveAs Filename:=fName
  13.2.8 關(guān)閉前自動保存工作簿
  關(guān)閉Excel時,如果對工作簿進(jìn)行了修改且沒有存盤,系統(tǒng)將打開提示對話框,提醒用戶保存修改。在實(shí)際的VBA程序中,可能需要強(qiáng)制保存(即在退出時不詢問用戶是否存盤,而是直接保存修改結(jié)果)。
  這時可在Workbook對象的BeforeClose事件中編寫代碼。在關(guān)閉工作簿之前,將先產(chǎn)生此事件。如果該工作簿已經(jīng)更改過,則本事件在底部用戶是否保存更改之前產(chǎn)生。例如,下面的代碼將BeforClose事件的響應(yīng)設(shè)置為保存工作母虎任何更改。
  Private Sub workbook_BeforeClose(Cancel as Boolean)
             If Me.Saved = False Then Me.Save
  End Sub
  13.3 Worksheet對象
  Worksheet對象代表Excel的工作表。通過Worksheet對象,可以在程序中完成各種針對工作表的操作,如設(shè)置單元格格式、插入工作及給工作表取名等。多個Worksheet對象組成的Worksheets集合。
  13.3.1 新建工作表
  工作表對象(Worksheet)屬于Worksheets集合中的成員,每個Worksheet對象都代表一個工作表。Excel中還提供了一個Sheets集合,該集合中的每個成員都是Worksheet對象或Chart對象,其屬性和方法都相同。
  在Worksheets集合中,除了一般集合對象具有的屬性外,還有一個Visible屬性,通過該屬性可控制集合中的Worksheet對象是否可見。通過Worksheet集合的方法,可以對工作進(jìn)行控制,下面介紹其中常用的方法。
  1. Add方法
  新建工作表、圖表或宏表。新建的工作表將成為活動工作表,其語法格式如下:
  Worksheets.Add(Before,After,Count,Type)
  其中各參數(shù)的意義為:
  ●Before,指定工作表的對象,新建的工作表將置于此工作表之前。
  ●After,指定工作表的對象,新建的工作表將置于此工作表之后。
  ●Count,設(shè)置要添加的工作表數(shù),默認(rèn)值為1。
  ●Type,指定工作表類型。工作表類型可以為xlWorksheet,xlChart,xlExcel4MacroSheet或xlExcel4IntlMacroSheet(默認(rèn)值為xlWorksheet)。如果同時省略Before和After,則新工作表插入到活動工作表之前。例如,執(zhí)行以下代碼,在工作簿中新增兩個工作表。
  Sub 新建工作表()
    Worksheets.Add Count:=2
  End Sub
  2. Copy方法
  將工作表復(fù)制到工作簿的另一位置。其語法格式如下:
  Worksheets.Copy(Before,After)
  若不指定Before和After,則Excel將新建一個工作簿,其中包含復(fù)制的工作表。
  3.Delete方法
  刪除集合中的指定對象——工作表(Worksheet)對象。
  4. Move方法
  將工作表移到工作簿中的其他位置,代碼如下:
  Worksheets.Move(Before,After)
  如果既不指定Before也不指定After,那么Excel將新建一個工作簿,其中包含所移動的工作表。例如,下面的代碼將當(dāng)前活動工作簿的Sheet1移到Sheet2之后。
  Worksheets("Sheet1").Move after:=Worksheets("Sheet2")
  13.3.2 管理批注
  在“審閱”選項(xiàng)卡的“批注”組中,單擊“新建批注”按鈕,可為當(dāng)前單元格插入批注。在Excel環(huán)境下,可通過該組中的相關(guān)按鈕處理批注,也可以通過VBA代碼對批注進(jìn)行管理。
  在VBA中,將每一個批注作為一個Comment對象來處理。每個工作表的Comment對象組成一個Comments集合,如果工作表中沒有批注,這個集合就為空。
  1. 添加批注
  使用AddComment方法可在區(qū)域內(nèi)添加批注。以下代碼表示在第一張工作表的單元格E5中添加批注。
  Sub 添加批注()
    With Worksheets(1).Range("e").AddComment
      .Visible?。健alse
      .Text?。⑴⑷掌冢海ⅰ。Αate
    End With
  End Sub
  Worksheets(1)表示當(dāng)前工作簿中排在第一個位置的工作表,并不一定是名稱為“Sheet1”的表,如果要引用“Sheet1”表,則應(yīng)使用
Worksheets("Sheet1")的方式來引用。
  Text是Comment對象的方法,所以不使用等號設(shè)置其批注值。
  注意:如果單元格中已經(jīng)添加了批注,使用AddComment方法再插入批注時將產(chǎn)生錯誤。
  2. 查看批注數(shù)量
  使用Comments集合對象的Count屬性可查看指定工作表的批注數(shù)量。例如以下代碼將顯示當(dāng)前工作簿的第一個工作表中的批注數(shù)量:
  MsgBox Worksheets(1).Comments(1).Count
  3. 查看批注
  工作表中的批注全部Comments集合中,所以可以用For Each循環(huán)將其逐個顯示出來。例如,以下代碼顯示第一個工作表中各批注的作者及批注的內(nèi)容:
  Sub 查看批注()
   Dim cm As Comment
   Dim i As Integer,j As Integer
  ?。椋絎orksheets(1).Comments.Count
   For Each cm In Worksheets(1).Comments
    ?。辏健。?1
     MsgBox "第" & j & "條/共" & i & "條批注" & vbCrLf & "作者:" & cm.Author?。Α?批注內(nèi)容:" & cm.Text
            Next
  End Sub
  執(zhí)行以上代碼之前,先在第一個工作表中插入幾個批注。程序執(zhí)行結(jié)果如圖13-14所示。在Excel顯示的提示對話框中單擊“確定”按鈕,可顯示下一個批注。
       
  13.3.3 設(shè)置工作表滾動區(qū)域
  與以往版本相比,Excel 2007工作表非常龐大,為1 048 576行乘以16 384列,在屏幕上一次顯示不完所有單元格,可由用戶托動水平和垂直滾動條來顯示屏幕以外的單元格。在程序中,可通過對工作表或窗口的相關(guān)屬性進(jìn)行設(shè)置來控制顯示的單元格位置
Excel 20007主要通過Scroll Area屬性來設(shè)置窗口的滾動區(qū)域。
  使用工作表的ScrollArea屬性可設(shè)置工作表中允許滾動的區(qū)域,用戶不能選定滾動區(qū)域之外的單元格。例如,以下代碼設(shè)置用戶操作的區(qū)域“A1:C20”:
  Sub 設(shè)置滾動區(qū)域()
    Worksheets(1).ScrollArea = "A1:C20"
  End Sub
  執(zhí)行以上代碼后,用戶將不能再選擇“A1:C20”區(qū)域以外的單元格了??蓪crollArea屬性設(shè)置為空字符串(""),以允許選定整張工作表內(nèi)所有單元格。
  13.3.4 在工作表中繪制圖形
  在Excel環(huán)境中,可在工作表中插入各種剪貼畫、形狀及SmartArt圖形。通過VBA可更精確地在工作表中繪制圖形,也可控制工作表中的每一個圖形。
  Shape對象代表工作表繪圖層中的對象,例如自選圖形、任意多邊形、OLE對象或圖片等。工作表中的多個Shape對象構(gòu)成Shapes集合對象。通過Shapes集合對象中的方法可向工作表中添加線形標(biāo)注、圖表、連接符、圖片、藝術(shù)字及各種圖形等形狀。例如,使用AddPolyline方法可創(chuàng)建一個不封閉的連續(xù)線段或一個封閉的多邊形。使用該方法之前,需首先定義一個包含多邊形各點(diǎn)坐標(biāo)的二維數(shù)組,然后使用該方法即可繪制出需要的多邊形。
 
  對于工作表中的圖形,還可對其進(jìn)行編輯。例如,以下代碼對前面生成的多邊形進(jìn)行編輯,首先修改其填充色為紅色,再將多邊形進(jìn)行垂直翻轉(zhuǎn),結(jié)果如圖13-16所示。
             
  Sub 修改圖形()
    With Worksheets(1).Shapes(1)
   ?。瓼ill.ForeColor.RGB = RGB(255,0,0)
   ?。瓼lip msoFlipVertical
   End With
  End Sub
  13.3.5 隱藏工作表
  在很多情況下,使用Excel構(gòu)臺應(yīng)用程序都需要授權(quán)才能使用。對用戶的授權(quán)一般采用用戶名加密碼的方式來進(jìn)行驗(yàn)證。在用戶還沒有進(jìn)行登錄驗(yàn)證時,打開的系統(tǒng)界面將只顯示一個工作表,其他工作表都處于隱藏狀態(tài)。這樣可保護(hù)第三數(shù)據(jù)使其不被外泄。
  當(dāng)授權(quán)用戶操作結(jié)束后,在退出系統(tǒng)之前,應(yīng)該將工作表隱藏起來。在Workbook對象的BeforClose事件中編寫如下代碼即可完成該功能:
  Private Sub Workbook_BeforeClose(Cancel As Boolean)
   For?。椋? To Sheets.Count               ?。аh(huán)隱藏各工作表
     If Sheets(i).Name<>"登錄"Then Sheets(i).Visible?。健alse
   Next
  End Sub
  13.3.6 在工作表中校驗(yàn)數(shù)據(jù)
  在Excel工作表中輸入數(shù)據(jù)時,有時希望將某些列的值限定在一定的范圍內(nèi),這時可通過Worksheet對象的Change事件對單元格中錄入的數(shù)據(jù)進(jìn)行校驗(yàn)。例如,以下代碼將檢查工作表的第3列,如果輸入的內(nèi)容不是“男”或“女”,則將顯示錯誤伯信息。
  13.3.7 自動生成下拉數(shù)據(jù)
  在Excel工作表中錄入數(shù)據(jù),可以使用上面介紹的方法對錄入的數(shù)據(jù)進(jìn)行校驗(yàn),如果不符合要求就顯示錯誤提示信息,讓用戶重新錄入。
  如果某列數(shù)據(jù)有多個選項(xiàng),那么使用這種方法時,其判斷代碼將會變得很長。另外,用戶錄入數(shù)據(jù)時也不知道是否正確。這時可以使用下拉列表的方式,將多個選項(xiàng)列出來,讓用戶直接選擇,這樣可提高數(shù)據(jù)錄入的效率,也不會產(chǎn)生錯誤的數(shù)據(jù)。
  下面用一個實(shí)例來介紹這種方法的使用步驟。該例制作一個員工花名冊錄入表,對于表中的職務(wù)一項(xiàng),則顯示一個列表來讓用戶選擇。具體制作步驟如下。
  步驟1 啟動Excel,將新工作簿保存為“員工花名冊.xlsm”。
  步驟2 在第一個表中制作表頭,并設(shè)置名稱為“員工花名冊”,如圖13-17所示。
  步驟3 將另一個工作表名為“職務(wù)”,并輸入如圖13-18所示的數(shù)據(jù)。
  
  步驟4 按快捷鍵“Alt+F11”進(jìn)入VBE環(huán)境,在“工程資源管理器”中雙擊“Sheets(員工花名冊)”,打開代碼窗口,輸入以下代碼,如圖13-19所示。
      
     
     
  本段程序的功能是當(dāng)選定區(qū)域發(fā)生改變時,對新選定的區(qū)域進(jìn)行格式的設(shè)置。該程序的關(guān)鍵之處在于當(dāng)工作表上的選定區(qū)域發(fā)生改變時(用鼠標(biāo)單擊某個單元格或移動光標(biāo)鍵改變選擇的單元格),將產(chǎn)生SelectionChange事件(即執(zhí)行本段程序)。
  程序首先從“職務(wù)”表中逐行讀取數(shù)據(jù),并將其串在一起放在一個字符串中,代后面的代碼使用。
  該程序中的Target表示新選定的區(qū)域,Target.Column為選定區(qū)域的列序號。
  當(dāng)選定區(qū)域?yàn)榈?列(“花名冊”工作表第1列為“編號”)時,通過語句:
  Target.NumberFormatLocal?。健。ⅲ溃?/div>
  將該列設(shè)為文本格式。如果不設(shè)置為文本格式,在輸入長度大于11位的數(shù)據(jù)時,系統(tǒng)默認(rèn)為常規(guī)格式,將用科學(xué)計數(shù)法表示為數(shù)值。
  當(dāng)選定區(qū)域?yàn)榈?列(“性別”)時,通過語句:
  Target.Validation.Add xlValidateList, Formula1:="男,女"
設(shè)置該單元格為一個校驗(yàn)列表,列表的選項(xiàng)為“男”或“女”。當(dāng)每次將錄入焦點(diǎn)移到該列時,都將增加這個校驗(yàn)列表,這將引起程序出錯,所以在增加校驗(yàn)列表之前,先執(zhí)行一個刪除校驗(yàn)列表的語句:
  Target.Validation.Delete
  當(dāng)選定區(qū)域?yàn)榈?列(“職務(wù)”)時,設(shè)置該單元格的校驗(yàn)列表,列表的選項(xiàng)為一個字符串Zw。字符串Zw的值在本段程序開始處已準(zhǔn)備好。
  13.4 Range對象
  通過以下屬性可以獲取一個Range對象,然后使用Range對象的屬性和方法對單元格內(nèi)容、格式等進(jìn)行控制。
  1.Range屬性
  工作表(Worksheet)對象或Range對象的Range屬性返回一個Range對象,它代表一個單元格或單元格區(qū)域。常見的表示方法有:
   
  
  其中MyRange,YourRange,HIsRange為單元格區(qū)域的名稱。
  2. Cells屬性
  Worksheet對象或Range對象的Cells屬性也可返回一個Range對象。常見的表示方法有:
  
  使用Cells屬性可以方便地使用變量來指定行列,下列代碼用于在Sheet1工作表上創(chuàng)建行號和列標(biāo):
  
 
  程序運(yùn)行結(jié)果如圖13-20所示。
   
  3. Offset屬性
  該屬性返回Range對象,它代表位于指定單元格區(qū)域的一定的偏移量位置上的區(qū)域。使用格式為:
  Offset(RowOffset,ColumnOffset)
其中RowOffset為行偏移量,而ColumnOffset為列偏移量。例如,下列代碼將激活Sheet1工作表活動單元格向右偏移三列、向下偏移三行處的單元格。
  Worksheets("Sheet1").Activate
  ActiveCell.Offset(rowOffset:=3,columnoffset:=3).Activate
  4.Columns屬性
  返回一個Range對象,它代表指定區(qū)域的列。此屬性在應(yīng)用于一個多重選定區(qū)域的Range對象時,只會從該區(qū)域的第一個子區(qū)域中返回列。例如,如果Range對象有兩個子區(qū)域A1:B2和C3:D4,那么Selection.Columns.Count的返回值是2,而不是4。
  5. Rows屬性
  返回一個Range對象,它代表指定單元格區(qū)域中的行。例如,以下代碼將刪除表格中的第5行:
  Worksheets("Sheet1").Rows(5).Delete
  6. CurrentRegion屬性
  返回一個Range對象,該對象表示當(dāng)前區(qū)域。當(dāng)前區(qū)域是以空行與空列的組合為邊界的區(qū)域。例如,以下代碼將選定工作表Sheet1上的當(dāng)前區(qū)域:
  Worksheets("Sheet1").Activate
  ActiveCell.CurrentRegion.Select
  7.End屬性
  返回一個Range對象,該對象代表包含源區(qū)域的區(qū)域尾端的單元格。等同于按組合鍵<End+↑>,<End+↓>,<End+←>或<End
+→>。其格式為:
  Range.End(Direction)
其中Direction指定移動的方向,可為4個值:xlDown,xlToLdft,xcToRight,xlUp分別表示向下、向左、向右、向上4個方向。
  下面列舉部分示例代碼:
 
  8.EntireColumn屬性
  返回一個Range對象,該對象包含指定區(qū)域的整列(或多列)。
  9. ’EntireRow屬性
  返回一個Range對象,該對象包含指定區(qū)域的整行(或多行)。
  10. Union方法
  使用Union(range1,range2……)可返回多塊區(qū)域,即該區(qū)域由兩個或多個連續(xù)的單元格區(qū)域組成。下面的代碼創(chuàng)建由單元格區(qū)域A1:B2和C3:D4組合定義的對象,然后選定該定義區(qū)域。
  11. ActiveCell屬性
  ActiveCell屬性返回一個Range對象,代表活動窗口(最上方的窗口)或指定窗口中的活動單元格。若窗口中沒有顯示工作表,此屬性無效。
  活動單元格為選定區(qū)域內(nèi)部的一個單元格。而選定區(qū)域可以包含多個單元格,但只有一個單元格為活動單元格。
  下列表達(dá)式都返回活動單元格,并且都是等效的。
  13.4.2 設(shè)置邊框線
  Excel單元格區(qū)域具有4個分立的邊框:左邊框、右邊框、頂部邊框和底部邊框。VBA通過Border對象來控制邊框,各邊框組成Borders集合。這4個邊框既可單獨(dú)返回,也可作為一個組同時返回。以下代碼將第一個工作表上單元格區(qū)域“A1:C3”添加雙邊框。
  Worksheets(1).Range("A1:C3").Borders.LineStyle =  xlDouble
  以上代碼同時設(shè)置了區(qū)域內(nèi)每個單元格上下左右4個邊框線,如圖13-21所示。
                
  如果要分別控制邊框線,可使用Borders(index)的方式來設(shè)置,index為以下常量之一:
  ▲xlDiagonalDown,區(qū)域中每個單元格的左上角至右下角的邊框;
  ▲xlDiagonalUp,區(qū)域中每個單元格的左下角至右上角的邊框;
  ▲xlEdgeBottom,區(qū)域底部的邊框;
  ▲xlEdgeLeft,區(qū)域左邊的邊框;
  ▲xlEdgeRight,區(qū)域右邊的邊框;
  ▲xlEdgeTop,區(qū)域頂部的邊框;
  ▲xlInsideHorizontal,區(qū)域中所有單元格的水平邊框(區(qū)域以外的邊框除外);
  ▲xlInsideVertical,區(qū)域中所有單元格的垂直邊框(區(qū)域以外的邊框除外)。
  以下代碼設(shè)置單元格區(qū)域“A1:C3”的底部邊框的顏色為“紅色”。
  
  邊框線的線型(LineStyle)可以設(shè)置為以下幾種之一:
  ●xlContinuous,實(shí)線;
  ●xlDash,虛線;
  ●xlDashDot,點(diǎn)劃相間線;
  ●xlDashDotDot,劃線后跟兩個點(diǎn);
  ●xlDot,點(diǎn)式線;
  ●xlDouble,雙線;
  ●xlLineStyleNone,無線條;
  ●xlSlantDashDot,傾斜的劃線。
  13.4.3 設(shè)置單元格部分字符格式
  如果要設(shè)置單元格中部分字符的格式,可以使用Range對象的Characters屬性,該屬性返回Characters對象。使用Characters對象可修改包含在全文本字符串中的任意字符序列。
  僅當(dāng)需要更改對象中文本的一部分而不影響其余部分時,才有必要使用Characters對象。要同時更改所有文本,通??梢詫υ搶ο笾苯討?yīng)用某一適當(dāng)?shù)姆椒ɑ驅(qū)傩浴@?,以下代碼將單元格A5的內(nèi)容設(shè)置為斜體:
  Worksheets("Sheet1").Range("A5").Font.Italic = True
  使用Characters對象可為文本字符串內(nèi)的字符設(shè)置格式。其格式如下:
  Range.Chracters(Start,Length)
其中參數(shù)的含義如下:
  ★Start,設(shè)置要返回的第一個字符的位置。如果此參數(shù)是1或被省略,則此屬性返回一個以第一個字符為開頭的字符區(qū)域。
  ★L(fēng)ength,設(shè)置要返回的字符數(shù)。如果省略此參數(shù),則此屬性返回字符串的后半部分(Start字符之后的所有字符)。
  下面的代碼向單元格B1中添加文本,并將第二個單詞設(shè)置為加粗:
  With Worksheets("Sheet1").Range("B1")
    ?。甐alue = "New Title"
    .Characters(5,5).Font.Bold = True
 
  13.4.4 操作當(dāng)前區(qū)域
  當(dāng)前區(qū)域是指以空行與空列的組合為邊界的區(qū)域。使用CurrentRegion屬性可返回指定單元格所在的當(dāng)前區(qū)域。該屬性對于很多操作來說是很有用的,能自動將選定區(qū)域擴(kuò)展到包含整個當(dāng)前區(qū)域,例如以下代碼:
  ActiveCell.CurrentRegion.Rows.Count
  ActiveCell.CurrentRegion.Columns.Count
將獲得與活動單元格連續(xù)的單元格區(qū)域的行數(shù)和列數(shù)。
  假設(shè)在Sheet1中有一個包含標(biāo)題行的表,那么以下代碼僅選定該表,但不選定標(biāo)題行。執(zhí)行代碼之前,活動單元格必須處于該表中。
  Set tbl = ActiveCell.CurrentRegion
  tbl.Offset(1,0).Resize(tbl.Rows.Count - 1,tbl.Columns.Count).Select
  13.4.5 修改列寬
  在Excel中,通過拖動列標(biāo)即可方便直觀地調(diào)整列的寬度。在VBA中通過ColumnWidth屬性也可獲取或設(shè)置指定區(qū)域中所有列的列寬。
  一個列寬單位等于“常規(guī)”樣式中一個字符的寬度。對于比例字體,則使用字符0(零)的寬度。例如,以下代碼使工作表Sheet1上B列的列寬加倍。
  With Worksheets("Sheet1").Columns("B")
    ?。瓹olumnWidth?。健olumnWidth*2
  End With
  13.4.6 定義條件格式
  Excel中定義的條件格式為FormatCondition對象,多個條件格式組成FormatConditions集合。通過Range對象的FormatConditions屬性可獲取FormatConditions集合的引用。例如,以下代碼為“E1:E10”單元格區(qū)域添加條件格式,其條件是在單元格區(qū)域“E1:E10”中,如果某個單元格的值大于“A1”單元格的值,則該單元格的邊框線為黃色的細(xì)實(shí)線,且字體為紅色的粗體字。
  使用FormatConditions集合的Add方法添加新的條件格式的語法格式如下。
  表達(dá)式.Add(Tybe,Operator, Formula1,Formula2)
其中,參數(shù)Type指定條件格式是基于單元格值還是基于表達(dá)式的,可為以下值之一:
  §x.AboveAverageCondition,高于平均值條件;
  §xlBlanksCondition,空值條件;
  §xlCellValue,單元格值;
  §xlColorScale,色階;  
  §xlCompareColumns,比較列;
  §xlDatabar,數(shù)據(jù)條;
  §xlErrorsCondition,錯誤條件;
  §xlExpression,表達(dá)式;
  §xlIconSet,圖標(biāo)集;
  §xlNoBlandsCondition,無空值條件;
  §xlNoErrorsCondition,無錯誤條件;
  §xlTextString,文本字符串;
  §xlTimePeriod,時間段;
  §xlTop10,前10個值;
        §xlUniqueValues,唯一值。
  參數(shù)Operator是條件格式運(yùn)算符,可為以下常量之一:
  ◎xlBetween,介于。只在提供了兩個公式的情況下才能使用。
  ◎xlEqual,等于。
  ◎xlGreater,大于。
  ◎xlGreaterEqual,大于或等于。
  ◎xlLess,小于。
  ◎xlLessEqual,小于或等于。
  ◎xlNotBetween,不介于。只在提供了兩個公式的情況下才能使用。
  ◎xlNotEqual,不等于。
  13.4.7 設(shè)置單元格
  使用NumberFormat屬性可為單元格區(qū)域設(shè)置格式代碼。格式代碼與如圖13-22所示的“設(shè)置單元格格式”對話框中的“格式代碼”選項(xiàng)是同一個字符串。
 
  13.5 Chart對象
  在Excel中進(jìn)行數(shù)據(jù)分析時,使用圖表可為用戶提供直觀的分析結(jié)果。Excel提供上百各圖表類型,用戶幾乎可以控制圖表的各個方面。
  13.5.1 圖表分類
  根據(jù)在工作簿中位置的不同,圖表可分為圖表工作表和嵌入工圖表兩種。
  在VBA中,用Chart對象表示每個圖表工作表,所有圖表工作表組成Charts集合。使用Charts(index)可以返回單個Chart對象,其中index為圖表的索引號或名稱。
  Sheets集合對象包含工作簿中所有的工作表(工作表和圖表工作表)。使用Sheets(index)可以返回單個工作表或圖表工作表。
  嵌入到工作表的圖表包含在ChartObject對象中,ChartObject對象的屬性和方法控制工作表上嵌入式圖表的外觀和大小。ChartObject對象是ChartObjects集合的成員。ChartObjects集合包含單一工作表上的所有嵌入式圖表。
  使用ChartObjects(index)可以返回單個ChartObject對象,其中index是嵌入式圖表的索引號或名稱。
  13.5.2 添加圖表工作表
  使用Charts集合對象的Add方法可創(chuàng)建一個新的圖表工作表并它添加到工作簿中。結(jié)合使用Charts集合對象的Add方法和Chart對象的ChartWizard方法可添加包含工作表數(shù)據(jù)的新圖表,例如下面的代碼將工作表“Sheet1”的單元格區(qū)域“A1:A10”中的數(shù)據(jù)添加為一個新的拆線圖:
  Sub 添加圖表工作表()
    With Charts.Add
    .ChartWizard Source:=Worksheets("Sheet1").Range("A1:A10"),_
      Gallery:=xlLine,Title:="拆線圖示例"
    End With
  End Sub
  執(zhí)行以上代碼,將插入一個名為“Chart1”的圖表工作表,并根據(jù)工作表“Sheet1”中“A1:A10”單元格區(qū)域中的數(shù)據(jù)生成拆線圖,如圖13-23所示。
  在Chart對象的ChartWizard方法中,參數(shù)Gallery用于指定圖表的類型,VBA中對各種圖表類型都定義了常量,如本例的xlLine常量表示拆線圖。常用的圖表類型如下:
  ●xlColumnClustered,簇狀柱形圖。
  ●xlPie,餅圖。
  ●xlColumnStacked,堆積柱形圖。
  ●xl3DbarClustered,三維簇狀條形圖。
  ●xl3Dpie,三維餅圖。
  ●xl3DcolumnStacked,三維堆積柱形圖。
  因?yàn)閳D表類型非常多,這里就不全部列出了。讀者可通過幫助系統(tǒng)查看“xlChartType”枚舉,其中列出了全部的圖表類型常量。
  15.3.3 添加嵌入式圖表
  使用ChartObjects集合對象的Add方法可創(chuàng)建一個新的空嵌入圖表并將它添加到集合中,再結(jié)合XhartObject對象的ChartWizard方法添加數(shù)據(jù)并設(shè)置新圖表的格式。以下代碼將在工作表“Sheet1"k創(chuàng)建一個新嵌入式圖表,然后以拆線圖形式添加單元格“A1:A10
”中的數(shù)據(jù)。
  執(zhí)行以上代碼,在工作表“Sheet1”中插入嵌入式圖表,并根據(jù)工作表“Sheet1”中“A1:A10”單元格區(qū)域中的數(shù)據(jù)生成拆線圖,如圖13-24所示。
  有關(guān)圖表的操作將在22章中進(jìn)行詳細(xì)介紹。
                
  13.6 Window對象
  Window對象代表一個窗口,能對窗口特性進(jìn)行設(shè)置和操作。許多工作表特征(如滾動條和標(biāo)尺)實(shí)際上是窗口的屬性。
  Window對象是Windows集合的成員。在Excel中,Applicaion對象和Worbook對象都有Windows集合,其中Applicaion對象的Windows集合包含應(yīng)用程序中的所有窗口;而Workbook對象的Windows集合只包含指定工作簿中的窗口。
  13.6.1 創(chuàng)建窗口
  在Excel 2007操作環(huán)境中的“視圖”選項(xiàng)卡的“窗口”組中,單擊“新建窗口”按鈕,可新建一個Excel窗口,該窗口的標(biāo)題欄名稱顯示為“Book1.xlsm:2”,同時新建的窗口中也將顯示活動窗口的副本,如圖13-25所示。
  在VBA代碼中,使用NewWindow方法也可完成該功能:
  Sub 創(chuàng)建窗口副本()
    ActiveWindow.NewWindow
    MsgBox“新建窗口的窗口號是:”&ActiveWindow.WindowNumber
  End Sub
  該例在圖13-25所示窗口(已新建一個窗口)的基礎(chǔ)上運(yùn)行,將創(chuàng)建第二個副本,窗口編號為3。運(yùn)行后新創(chuàng)建的窗口標(biāo)題欄如圖13-26所示。
  注意:窗口號和窗口索引(Index屬性)是兩個不同的概念,例如名稱為“Book1.xlsm:2”的窗口,其窗口號為2;而窗口索引為該窗口在Window集合中的位置,可以是窗口名稱或編號。
  13.6.2 命名活動窗口
  Application對象的Caption屬性可改變Excel主窗口標(biāo)題欄的顯示內(nèi)容。每個工作簿窗口還有一個名稱,該名稱可通過Workbook的Window對象進(jìn)行修改。例如,以下代碼將設(shè)置當(dāng)前活動工作簿窗口名稱:
  13.6.3 控制窗口狀態(tài)
  窗口狀態(tài)包括兩個層面的意思,一是整個Excel應(yīng)用程序窗口的狀態(tài);另一個是工作簿窗口的狀態(tài)。窗口狀態(tài)有三種形式,其常量表示為:
  ●xlNormal,正常;
  ●xlMaximized,最大化;
  ●xlMinimized,最小化。
  以下代碼用于控制Excel窗口和工作簿窗口的狀態(tài):
  Sub 控制窗口狀態(tài)()
  執(zhí)行以上代碼時,首先顯示即將進(jìn)行的操作。單擊對話框中的“確定”按鈕,將控制窗口的狀態(tài)。
  13.6.4 激活窗口
  當(dāng)打開多個Excel工作簿時,WindowsXP的任務(wù)欄中將出現(xiàn)多個任務(wù)按鈕,單擊按鈕可激活對應(yīng)的窗口。在VBA代碼中,也可根據(jù)需要激活相應(yīng)的窗口,例如,以下代碼將當(dāng)前Excel工作簿逐個激活:
  13.6.5 控制工作表顯示選項(xiàng)
  通過“Excel選項(xiàng)”可設(shè)置工作表的顯示選項(xiàng),如圖13-28所示。在該對話框中,通過選中或取消復(fù)選框中的標(biāo)記可設(shè)置對應(yīng)的選項(xiàng)。
  有時需要在VBA程序中進(jìn)行類似的設(shè)置。圖13-28所示的各選項(xiàng)都與Window對象的某一屬性相聯(lián)系,只需要設(shè)置該屬性的值,即可調(diào)整窗口的屬性。這些屬性都是邏輯值,可以使用“Not”運(yùn)算對其進(jìn)行取反,使用戶每次選擇都得到反向的設(shè)置,例如:
  ActiveWindow.DisplayHeadings?。健Ot ActiveWindow.DisplayHeadings
  以上代碼用來切換是否顯示工作表中的行列標(biāo)號。運(yùn)行后,工作表中的行標(biāo)號和列標(biāo)號將消失;再次運(yùn)行后,行列標(biāo)號重新出現(xiàn),如此反復(fù)。當(dāng)然也可以將該屬性設(shè)置一個常量,如False,以取消顯示行列標(biāo)號。例如,以下代碼顯示或隱藏工作表中的相關(guān)元素。
 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多