久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

第13章 Excel常用對(duì)象

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

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

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多