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

分享

第11章 對(duì)象概述

 昵稱380475 2011-02-14
 
第三部分 Excel對(duì)象模型
 
  對(duì)象模型用來描述對(duì)象之間的關(guān)系,。使用VBA在Excel環(huán)境下開發(fā)應(yīng)用程序,實(shí)質(zhì)就是訪問控制Excel各對(duì)象的過程,。使用VBA在Excel中進(jìn)行編程時(shí),,必須先了解Excel的對(duì)象模型。
  Excel 2007有200多個(gè)對(duì)象,,如果這些對(duì)象之間沒有任何邏輯聯(lián)系的話,,這些對(duì)象疳非常難于掌握和使用。事實(shí)上,,Excel中所有對(duì)象都處于一個(gè)完整的體系中,,每個(gè)對(duì)象都不是孤立的,。
  本部分共5章,詳細(xì)介紹了Excel中常用對(duì)象的使用方法,。
 
第11章 對(duì)象概述
 
  現(xiàn)實(shí)世界是由各種各樣的對(duì)象組成的,,對(duì)象之間通過一定的渠道相互聯(lián)系。計(jì)算機(jī)程序設(shè)計(jì)中也引入了對(duì)象這個(gè)概念,。面向?qū)ο蠓椒ㄊ且环N非常實(shí)用的軟件開發(fā)方法,,由于以客觀世界中的對(duì)象為中心,其分析和設(shè)計(jì)思想符合人們的思維方式,,分析和設(shè)計(jì)的結(jié)果與宏觀世界的實(shí)際比較接近,,因此容易被人們所接受。
  11.1 對(duì)象和類的概念
  Excel中包括了非常多的對(duì)象,,Excel窗口,、工作簿,、工作表,、單元格和圖表等都是對(duì)象。Excel含有上百種可以通過不同方式操作的對(duì)象,,所有的VBA對(duì)象都是通過層次組織起來的,,一些對(duì)象可能包含其他對(duì)象。例如,,Excel是一個(gè)Application對(duì)象,,該對(duì)象包含其他對(duì)象,諸如工作簿對(duì)象或命令條對(duì)象,;工作簿對(duì)象又包含其他對(duì)象,,諸如工作表對(duì)象或圖表對(duì)象。
  11.1.1 什么是對(duì)象
  在現(xiàn)實(shí)生活中,,每個(gè)實(shí)體都是對(duì)象,,例如,汽車,、電視機(jī)等都是現(xiàn)實(shí)世界中的對(duì)象,。每個(gè)對(duì)象都有它的屬性和操作,例如電視機(jī)有外形,、顏色,、音量、頻道等屬性,;有切換頻道,、改變音量等操作。電視機(jī)的屬性值表示了電視機(jī)所處的狀態(tài),,而狀態(tài)只能通過對(duì)電視機(jī)屬性的操作來改變,。
  在Excel中,,對(duì)象是指一組屬性及這組屬性上的專用操作的封裝體。屬性可以是一些數(shù)據(jù),,也可以是另一個(gè)對(duì)象,。例如,Excel工作簿為一個(gè)對(duì)象,,它的屬性有工作簿名稱,、保存位置、作者,、工作表等,;而工作表又可以是一個(gè)對(duì)象,還可以有自己的屬性,。每個(gè)對(duì)象都有它自己的屬性值,,屬性值表示該對(duì)象的狀態(tài)。對(duì)象中的屬性只能通過該對(duì)象所提供的操作來存取和修改,。操作也稱為方法或服務(wù),,它規(guī)定了對(duì)象的行為,表示對(duì)象所能提供的服務(wù),。一個(gè)對(duì)象通??捎蓪?duì)象名、屬性和操作三部分組成,。
  11.1.2 類的概念
  人們習(xí)慣于把具有相似特征的事物歸為一類,。在面向?qū)ο蟪绦蛟O(shè)計(jì)中,類是創(chuàng)建對(duì)象的模板,。對(duì)象按照實(shí)現(xiàn)的共性分組為“類”,,類定義了對(duì)象的屬性及用來控制對(duì)象行為的方法。
  類的定義可以看作是建立對(duì)象的原型,。建立類之后,,就可用它來建立許多需要的對(duì)象。與其他面向?qū)ο蟮某绦蛟O(shè)計(jì)語言(如C++,、Java)不同的是,,在使用VBA的大多數(shù)時(shí)間里,開發(fā)者都不會(huì)接觸到類的相關(guān)知識(shí),。如果開發(fā)者準(zhǔn)備創(chuàng)建自己的對(duì)象類,,可以使用VBA的類模塊來完成該任務(wù)。
  11.2 對(duì)象的屬性,、事件和方法
  在應(yīng)用程序中創(chuàng)建對(duì)象后,,可通過設(shè)置對(duì)象的屬性改變其外觀。在程序運(yùn)行過程中,隨著外部條件的改變(如單擊鼠標(biāo),、輸入數(shù)據(jù)等),,將觸發(fā)對(duì)應(yīng)的事件。執(zhí)行事件過程,,可以達(dá)到與用戶交互的目的,。
  11.2.1 對(duì)象屬性
  屬性決定了一個(gè)對(duì)象的外觀和行為。要改變一個(gè)對(duì)象的外觀和行為,,可以通過改變對(duì)象的屬性來實(shí)現(xiàn),。大多數(shù)對(duì)象屬性是在對(duì)象生成時(shí)自動(dòng)設(shè)置的,用戶可以在設(shè)計(jì)時(shí)通過屬性窗口或運(yùn)行時(shí)通過代碼改變,。在運(yùn)行時(shí)可以設(shè)置并可獲得值的屬性叫做讀寫屬性,;在運(yùn)行時(shí)只能讀取的屬性叫做只讀屬性。
  屬性定義了對(duì)象的特征,,諸如大小,、顏色或屏幕位置;或某一方面的行為,,諸如對(duì)象是否激活或可見,。可以通過修改對(duì)象的屬性來改變對(duì)象的特性,。
  例如,,工作簿對(duì)象有名稱屬性;區(qū)域?qū)ο笥辛?、字體、公式,、名稱,、行、樣式和值等屬性,。這些對(duì)象屬性是可以設(shè)置的,。通過設(shè)置對(duì)象的屬性可以控制對(duì)象的外觀和行為。對(duì)象屬性一次只能設(shè)置為一個(gè)特定的值,。例如,,當(dāng)前工作簿不可能同時(shí)有兩個(gè)不同的名稱。
  VBA中最難理解的部分是有些屬性同時(shí)又可以是對(duì)象,。如區(qū)域(Range)對(duì)象,,可以通過設(shè)置字體顏色來改變選定單元格的外觀。但是,,字體(Font)可以有不同的名稱(Times New Roman,,Arial,……),,不同的字號(hào)(10,,12,,14……)和不同的樣式(粗體,斜體,,下畫線,,……)。這些都是字體的屬性,。如果字體有屬性,,那么字體也是對(duì)象。
  1. 設(shè)置屬性值
  設(shè)置屬性值可通過Visual Basic編輯器中的“屬性”窗口進(jìn)行,,也可在程序中使用代碼對(duì)其進(jìn)行改變,,具體格式如下:
  object.property = expression
  其中,object為對(duì)象名,,property為對(duì)象的某個(gè)屬性,。
  例如,下面的過程通過設(shè)置窗體中的Caption屬性來更改Visual Basic窗體的標(biāo)題,。
  Sub ChangeName(newTitle)
    myForm.Caption?。健ewTitle
  End Sub
  2. 讀取屬性值
  可以通過屬性的返回值來檢索對(duì)象的信息。讀取屬性值可以用以下語法:
   variable = object.property
  下列過程使用一個(gè)消息框來顯示標(biāo)題,,它顯示在當(dāng)前活動(dòng)窗體頂部,。
  
  End Sub
  屬性值也可以作為較復(fù)雜表達(dá)式的一部分,而不必將屬性賦予變量,。下面的代碼計(jì)算工作表“Sheet1”兩單元格數(shù)據(jù)之和,。
  intSum = Sheet1.Cells(2,1).Value + Sheet1.Cells(2,2).Value
  工作表Sheet1對(duì)象中又包含很多對(duì)象,其中的Cells對(duì)象為工作表單元格集合對(duì)象,,父對(duì)象引用子對(duì)象時(shí)通過點(diǎn)運(yùn)算符進(jìn)行連接,。
  11.2.2 對(duì)象事件
  事件是某個(gè)特定的時(shí)刻所發(fā)生的事情,它是對(duì)象狀態(tài)轉(zhuǎn)換過程的描述,。事件沒有持續(xù)時(shí)間,,是瞬間完成的。
  事件是由對(duì)象識(shí)別的一個(gè)動(dòng)作,。開發(fā)人員可以編寫相應(yīng)的VBA代碼來響應(yīng)該動(dòng)作,。在VBA中,可以激發(fā)事件的用戶動(dòng)作包括:切換工作表,、選擇單元格,、單擊鼠標(biāo)等幾十種事件。當(dāng)事件發(fā)生時(shí),,將執(zhí)行包含在事件過程中的代碼,。如果用戶沒有定義某事件所調(diào)用的過程,那么當(dāng)發(fā)生該事件時(shí)就不會(huì)產(chǎn)生任何響應(yīng)。
  事件既可以由用戶動(dòng)作(如單擊鼠標(biāo),、按鍵等)產(chǎn)生,,也可以由程序代碼或系統(tǒng)產(chǎn)生(如計(jì)時(shí)器定時(shí)產(chǎn)生的事件)。
  編寫事件響應(yīng)代碼是在“代碼編輯器”中進(jìn)行的,,“代碼編輯器”的右邊有一個(gè)事件列表,,這個(gè)事件列表從屬于左邊的控件對(duì)象,當(dāng)左邊控件列表中的控件改變后,,右邊的事件列表也會(huì)發(fā)生變化,,如圖11-1所示。
             
  11.2.3 對(duì)象方法
  方法指的是對(duì)象能執(zhí)行的動(dòng)作,。例如,,可以使用Add方法添加一個(gè)新工作簿或者工作表。下面的程序使用Add方法給當(dāng)前工作簿增加一個(gè)新的工作表,。
  Sub AddSheet()
    ActiveWorkbook.Sheets.Add
  End Sub
  對(duì)象可以使用不同的方法,。例如,區(qū)域(Range)對(duì)象有清除單元格內(nèi)容的ClearCoutents方法,,清除格式的ClearFormats方法,,以及同時(shí)清除內(nèi)容和格式的Clear方法;另外還有選擇,、復(fù)制或移動(dòng)對(duì)象的方法等,。
  部分對(duì)象的方法有可選參數(shù),用來確定方法執(zhí)行的具體方式,。例如,,工作簿(WorkBook)對(duì)象有一個(gè)Close(關(guān)閉)方法,可以使用它關(guān)閉任何打開了的工作簿,。如果工作簿有改動(dòng),,Excel分彈出一個(gè)信息,詢問用戶是否要保存變化,。這時(shí)開發(fā)人員可以設(shè)定Close方法的SaveChanges參數(shù)為“假”(False)來關(guān)閉這個(gè)工作簿并且不管它的任何變化。
  在調(diào)用方法時(shí)使用點(diǎn)操作符引用對(duì)象,,如果有參數(shù),,在方法后加上參數(shù)值,參數(shù)間用空格隔開,。在代碼中使用方法的格式如下:
  object.method
  例如,,下面的代碼選中工作表Sheet1的單元格“A1”,然后清除其中的內(nèi)容:
  Sheet1.Range("A1").Select
  Sheet1.Range("A1").Clear
  11.3 對(duì)象變量和對(duì)象數(shù)組
  本書前面章節(jié)介紹了變量和數(shù)組的知識(shí),。在VBA中,,變量和數(shù)組除了能保存簡單數(shù)據(jù)類型外,還可以保存和引用對(duì)象。在程序中使用變量時(shí)引用一個(gè)反復(fù)使用的對(duì)象可加快程序的執(zhí)行速度,。
  11.3.1 對(duì)象變量
  對(duì)象變量是代表一個(gè)完整對(duì)象的變量,,該變量中實(shí)際保存著具體對(duì)象的引用指針。與普通變量類似的是,,使用對(duì)象變量也需要兩個(gè)步驟:聲明對(duì)象變量和指定對(duì)象變量到某一對(duì)象,。
  1. 引用對(duì)象的成員
  可以用點(diǎn)操作符連接對(duì)象名來限定對(duì)某個(gè)對(duì)象成員的引用,同時(shí)也指定了該對(duì)象成員在對(duì)象層次結(jié)構(gòu)中的位置,。其語法格式如下:
 ?。紝?duì)象名>.<對(duì)象名>.……
  后一對(duì)象是前一對(duì)象的成員,它限定了對(duì)前一對(duì)象所包含的對(duì)象成員的引用,。如以下語句:
  Application.Workbooks("Book1.Xlsm").Worksheets("Sheet1").Range(“A1”)
表明是對(duì)工作簿Book1上的工作表Sheet1中單元格A1的引用,,其中Application代表Excel應(yīng)用程序本身,可省略,。若Book1是當(dāng)前活動(dòng)工作簿,,則上述語句可簡寫為:
  Worksheets("Sheet1").Range("A1")
  若Sheet1是當(dāng)前活動(dòng)工作表,則又可簡寫為:
  Ranet("A1")
  因此,,若在引用中省略了工作簿對(duì)象,,則表明使用當(dāng)前活動(dòng)工作表;若再省略了工作表對(duì)象,,則表明使用當(dāng)前活動(dòng)工作表,。
  2. 聲明對(duì)象變量
  可以使用Dim語句或其他的聲明語句之一(Public,Private或Static)聲明對(duì)象變量。引用對(duì)象的變量必須是Variant,、Object,,或是一個(gè)對(duì)象的指定類型。例如,,下列聲明是有效的:
  
  注意:如果使用對(duì)象變量前沒有聲明數(shù)據(jù)類型,,則對(duì)象變量默認(rèn)的數(shù)據(jù)類型是Variant類型。
  在有的情況下,,只有等到程序運(yùn)行時(shí)才知道對(duì)象變量引用的對(duì)象類型,,這時(shí)可將對(duì)象變量聲明為Object數(shù)據(jù)類型。使用Object數(shù)據(jù)類型可以創(chuàng)建任何對(duì)象的一般的引用,。
  如果知道對(duì)象變量引用的對(duì)象類型,,最好將其聲明為所知道的對(duì)象類型。聲明指定的對(duì)象類型提供自動(dòng)的類型檢查,,更快的代碼生成,,并增加可讀性。例如,,如果對(duì)象變量MyObject指定為Range對(duì)象類型,,則可以用下列的語句來聲明:
  Dim MyObject As object                                  '聲明為一般的對(duì)象
  Dim Myobject As Range         '只聲明為Range對(duì)象
  3. 給對(duì)象變量賦值
  與普通變量的賦值不同,給對(duì)象變量賦值必須使用Set語句,。例如,,下面的代碼給對(duì)象變量MyCell賦值:
  Set MyCell = Worksheets(1).Range("C2")
  可以同時(shí)使用New關(guān)鍵字和Set語句來聲明對(duì)象變量,并賦值一對(duì)象給它。例如,下面的代碼首先聲明一個(gè)集合對(duì)象,,然后使用New關(guān)鍵字來新建一個(gè)集合對(duì)象:
  Dim MyCollection As Collection
  Set MyCollection = New Collection
  設(shè)置一個(gè)對(duì)象變量等于“Nothing”會(huì)中斷此對(duì)象變量與任何特定對(duì)象的關(guān)聯(lián),,如此可預(yù)防因意外改變變量而更改對(duì)象,。在關(guān)閉關(guān)聯(lián)對(duì)象后,對(duì)象變量總是設(shè)置為“Nothing”,,所以可以檢測對(duì)象變量是否指向有效的對(duì)象,。例如:
  If Not Myobject Is Nothing Then        '變量引用有效的對(duì)象
  ……
  End If
  當(dāng)然,該檢測不能絕對(duì)地決定用戶是否已關(guān)閉包含對(duì)象變量所引用對(duì)象的應(yīng)用程序,。
  4. 引用對(duì)象的當(dāng)前實(shí)例
  “Me”關(guān)鍵字可用來對(duì)象的當(dāng)前實(shí)例,,即代碼正在執(zhí)行的對(duì)象。所有與當(dāng)前對(duì)象關(guān)聯(lián)的過程都可以通過“Me”來引用,。使用“Me”來傳遞關(guān)于對(duì)象的當(dāng)前實(shí)例信息到其他模塊中的過程顯得特別有用,。例如,假設(shè)在模塊中有以下過程:
  Sub ShangeobjectColor(MyobjectName As object)
    MyobjectName.BackColor?。健GB(Rnd*256,,Rnd*256,Rnd*256)
  End Sub
  使用以下語句,,可以調(diào)用過程并將對(duì)象的當(dāng)前的實(shí)例當(dāng)做參數(shù)來傳遞:
  ChangeobjectColor Me
  使用對(duì)象變量可簡化代碼,,并提高代碼的執(zhí)行速度。例如,,如果在某段代碼中需要反復(fù)使用單元格C2,,那么完整的引用代碼如下:
  Worksheets(1).Range("C2").Value = “地址”
  Worksheeta(1).Range("C2").Font.Name?。健?#8220;黑體”
  Worksheets(1).Range("C2").Font.Bold?。健rue
  使用對(duì)象變量后,代碼修改如下:
  Dim MyCell As Range
  Set MyCell?。健orksheets(1).Range("C2")
  MyCell.Value?。健?#8220;地址”
  MyCell.Font.Name = “黑體”
  MyCell.Font.Bold?。健rue
  這段代碼更易讀,并且執(zhí)行效率更高,。僅從這段代碼上還不易覺察速度的提高,,如果是在一個(gè)需要重復(fù)執(zhí)行幾百上千次的循環(huán)中執(zhí)行這段代碼,,其執(zhí)行效率明顯提高。
  11.3.2 對(duì)象數(shù)組
  如果在程序中需要處理大量相同類型的對(duì)象,,這時(shí)可使用對(duì)象數(shù)組來指定這些對(duì)象,。對(duì)象數(shù)組的定義與普通類型數(shù)據(jù)的數(shù)組相同,對(duì)象數(shù)組元素的使用與對(duì)象變量的使用類似,。下面以實(shí)例形式介紹對(duì)象數(shù)組的定義和使用,。
  例如,如果要引用工作表中A列的前10個(gè)單元格,,可使用以下代碼:
  
  程序首先定義一個(gè)具有10個(gè)元素的對(duì)象組,,接著使用一個(gè)循環(huán)將各單元格的引用賦值給對(duì)象數(shù)組,最后再使用一個(gè)循環(huán)調(diào)用對(duì)象數(shù)組各元素,。本例只顯示各單元格的值,,另外可通過對(duì)象數(shù)組中的元素MyRange(i)來控制各單元格的字體等各種懺悔,例如:
  
  11.4 集合概念
  在使用Excel開發(fā)應(yīng)用程序時(shí),,需要大量使用到集合,。通過對(duì)集合的操作可簡化代碼。下面介紹集合的概念及處理集合的方法,。
  11.4.1 集合的概念
  在Excel中新建一個(gè)工作簿,,可以發(fā)現(xiàn)每個(gè)工作表都是相同的。像這樣一組相似的對(duì)象就稱為“集合”,,集合也是對(duì)象,。Excel中使用得最頻繁的集合是代表所有的工作表和圖表工作表的Sheets集合、Workbooks集合,、Worksheets集合及Windows集合,。當(dāng)使用集合時(shí),可以在該集合中所有的對(duì)象上執(zhí)行相同的操作,。
  集合是一種特定類型的對(duì)象,,代表一組相同的對(duì)象。例如,,一部電話是一個(gè)對(duì)象,,多部電話就組成電話集合。
  一個(gè)集合也可能是另一個(gè)對(duì)象的屬性,。例如,,電話中的按鍵集合是電話對(duì)象的屬性,是單個(gè)按鈕對(duì)象的集合,。因此,,它們之間的關(guān)系是:電話集合是多部單個(gè)電話對(duì)象組成的集合,每個(gè)電話對(duì)象有一個(gè)稱作按鍵集合的屬性,,而按鍵集合是單個(gè)按鈕對(duì)象組成的集合,。
  11.4.2 集合的方法和屬性
  所有的集合都有方法和屬性,,可用來訪問集合中的單個(gè)對(duì)象。其中,,最重要的方法和屬性中有三個(gè),,即Count屬性、Item方法和Add方法,。
  1. Count屬性
  該屬性指出在集合中有多少個(gè)單個(gè)對(duì)象,。例如:
  Dim numWorsheets
  numWorksheets=ActiveWorkbook.Worksheets.Count
其中,numWorksheets是一個(gè)變量,,存儲(chǔ)ActiveWorkbook對(duì)象的數(shù)量(即工作簿中工作表的數(shù)量),。
  注意:若一個(gè)集合為空,該集合的Count屬性值為0,。
  2. Item方法
  該方法訪問集合中一個(gè)特定的對(duì)象,。例如:
  Set myWorksheet=ActiveWorkbook.WorkSheets.Item(2)
括號(hào)中的數(shù)字表明訪問的是哪個(gè)工作表,即在Worksheets集合中的第2個(gè)Worksheet對(duì)象,,并將它賦給myWorksheet變量,。
  也可以在括號(hào)中使用變量,例如:
  上面的代碼首先用變量numWorksheets來存儲(chǔ)在Worsheets集合中Worksheet對(duì)象的數(shù)量,,然后訪問最后的工作表,。因此,如果工作簿中共有5個(gè)工作表,,則能指定最后項(xiàng)目為“5”來訪問最后的工作表,,故下面的代碼與上面代碼最后一行等價(jià):
  Set theLastWorksheet=ActiveWorkbook.Worksheets.Item(5)
  3. Add方法
  該方法允許向集合中添加對(duì)象。例如:
  Set anotherWorksheet=ActiveWorkbook.WorkSheets.Add("Sheet6")
  如何使用Add方法取決于想要添加項(xiàng)目的集合對(duì)象,。在多數(shù)情況下,,能為新的對(duì)象指定一個(gè)名字,如上面代碼中的“Sheet6”,。
  11.4.3 訪問集合中的對(duì)象
  一個(gè)集合包含著具有相同類型的多個(gè)對(duì)象,,除了使用上面介紹的方法向集合中增加對(duì)象外,還可通過集合的屬性訪問集合中的單個(gè)對(duì)象,。
  1. Excel中的集合
  Excel中有很多系統(tǒng)定義的集合,,如以下代碼可在當(dāng)前工作簿中增加一張工作表(工作表集合中增加一個(gè)對(duì)象):
  Set ws = ActiveWorkbook.Worksheets.Add
  Worksheets是Worksheet(工作表)對(duì)象的集合,也是ActiveWorkbook對(duì)象的一個(gè)屬性,。在這是也可以得出集合的用處:一個(gè)工作簿可以包含任意多個(gè)工作表,,而Worksheets集合提供了管理這些工作表的簡單的方法。
  Excel中的常用的集合對(duì)象還有以下幾類:
  ●Sheets,,工作簿中所有工作表的集合,;
  ●Workbooks,所有打開的工作簿的集合,;
  ●Charts,,工作簿中圖表工作表的集合,。
  2. 引用集合中的對(duì)象
  使用VBA可以處理某個(gè)對(duì)象的整個(gè)集合,或者某集合中的一個(gè)單獨(dú)的對(duì)象,。引用集合中的對(duì)象的方法是:
  集合(“對(duì)象名”)或集合(對(duì)象索引號(hào))
  引用集合中的某個(gè)對(duì)象,即引用對(duì)象名或?qū)ο笏饕?hào)所打賭對(duì)象,。例如,,以下代碼引用集合Worksheets中的工作表Sheet1:
  Worksheets("Sheet1")
  若Sheet1是集合中的第一個(gè)工作表對(duì)象,還可以寫為以下形式:
  Worksheets(1)
  注意:“Sheets”集合由工作簿中的所有工作表(包括圖表工作表)組成,。若要引用工作稍事 的第一個(gè)工作表,,可采用語句Sheet(1)表示。
  11.5 處理對(duì)象和集合
  在Excel編程過程中,,需要大量地處理對(duì)象和集合,。VBA提供了兩個(gè)非常有用的結(jié)構(gòu),用于處理對(duì)象和集合,。
  11.5.1 使用With……End With語句
  很多時(shí)候,,需要對(duì)同一個(gè)對(duì)象進(jìn)行多個(gè)操作(即編寫多行代碼),這時(shí)若重復(fù)輸入相同的對(duì)象引用代碼,,會(huì)增加了錄入量,,從而可能造成更多的輸入錯(cuò)誤。同時(shí),,這些重復(fù)輸入的代碼,,也降低了程序執(zhí)行效率。
  使用With……End With語句可以對(duì)某個(gè)對(duì)象執(zhí)行一系列的操作,,而不必重復(fù)指出該對(duì)象的名稱,。其語法格式如下:
  With <對(duì)象>
   ?。壅Z句代碼]
  End With
  其中,,<對(duì)象>表示W(wǎng)ith語句要執(zhí)行操作的具體對(duì)象;[語句代碼]為對(duì)某對(duì)象執(zhí)行操作的一條或多條語句,,前面以點(diǎn)操作符開頭,。
  下面的代碼對(duì)當(dāng)前工作簿中的工作表Sheet1上的單元格區(qū)域A1:C10進(jìn)行操作,設(shè)置該區(qū)域的字體樣式,、字體大小,、下畫線及字體顏色等屬性。
  
  將該代碼使用With……End With語句重新編寫,,得到下面的代碼:
  
該代碼執(zhí)行與前面的代碼完全一樣的操作,。
  不能用一個(gè)With……End With語句來設(shè)置多個(gè)不同的對(duì)象,但可以將With塊放在另一個(gè)之中而產(chǎn)生嵌套的With語句,,使用時(shí)必須在內(nèi)層的With塊中使用完整的對(duì)象引用來指出在外層的With塊中的對(duì)象的成員,,例如:
  使用With語句,,不僅能避免反復(fù)輸入相同的代碼,使程序代碼更簡潔,,而且更重要的是,,能使程序運(yùn)行得更快。在上面的“設(shè)置格式”程序中,,可稍微感覺到兩個(gè)程序之間速度的差異,,若數(shù)據(jù)量再加大,則這種運(yùn)行速度之間的差異將更明顯,。
  在錄制宏時(shí),,Excel將大量使用With……End With結(jié)構(gòu),可參見本書第2章的內(nèi)容,。
  11.5.2 使用For Each……Next語句
  上一節(jié)介紹了集合的概念,,其包含的是一組相關(guān)的對(duì)象。如果需要對(duì)集合中的每個(gè)對(duì)象執(zhí)行相同的操作,,首先需通過集合對(duì)象的Count屬性獲取集合中包含的對(duì)象數(shù)量,,然后通過循環(huán)語句對(duì)集合中的每個(gè)對(duì)象執(zhí)行相同的操作。例如,,以下代碼將選中區(qū)域單元格中的英文字母轉(zhuǎn)換為大寫:
  Dim i As Long
  j = Selection.Count
  For i =1 To j
   Selection.Cells(i) = UCase(Selection.Cells(i))
  Next
  在VBA中提供了一個(gè)For Each……Next語句,,該循環(huán)語句可以逐個(gè)處理集合中每個(gè)對(duì)象。使用該語句處理集合時(shí),,不必知道集合中有多個(gè)元素,。其語法結(jié)構(gòu)如下:
  For Each 元素 In 集合
    [語句系列1]
    [Exit For]
    [語句系列2]
  Next [element]
  使用For Each……Next語句或?qū)⑶懊胬又械拇a改寫為以下形式:
  Dim MyCell As Range
  For Each MyCell In Selection
    MyCell = UCase(MyCell)
  Next
 

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

    0條評(píng)論

    發(fā)表

    請遵守用戶 評(píng)論公約

    類似文章 更多