Excel VBA 單元格區(qū)域引用方式_圖文_第1頁
Excel VBA 單元格區(qū)域引用方式_圖文_第2頁
Excel VBA 單元格區(qū)域引用方式_圖文_第3頁
Excel VBA 單元格區(qū)域引用方式_圖文_第4頁
Excel VBA 單元格區(qū)域引用方式_圖文_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、Excel VBA 單元格區(qū)域引用方式在使用ExcelVBA進行編程時,我們通常需要頻繁地引用單元格區(qū)域,然后再使用相應的屬性和方法對區(qū)域進行操作。所謂單元格區(qū)域,指的是單個的單元格、或者是由多個單元格組成的區(qū)域、或者是整行、整列等。下面,我們設定一些情形,以問答的形式對引用單元格區(qū)域的方式進行歸納。-問題一:在VBA代碼中,如何引用當前工作表中的單個單元格(例如引用單元格C3?回答:可以使用下面列舉的任一方式對當前工作表中的單元格(C3進行引用。(1 Range("C3"(2 C3(3 Cells(3, 3(4 Cells(3, "C"(5 Range

2、("C4".Offset(-1Range("D3".Offset(, -1Range("A1".Offset(2, 2(6 若C3為當前單元格,則可使用:ActiveCell(7 若將C3單元格命名為“Range1”,則可使用:Range("Range1"或Range1(8 Cells(4, 3.Offset(-1(9 Range("A1".Range("C3"-問題二:在VBA代碼中,我要引用當前工作表中的B2:D6單元格區(qū)域,有哪些方式?回答:可以使用下面列舉的任一方式對

3、當前工作表中單元格區(qū)域B2:D6進行引用。(1 Range(“B2:D6”(2 Range("B2", "D6"(3 B2:D6(4 Range(Range("B2", Range("D6"(5 Range(Cells(2, 2, Cells(6, 4(6 若將B2:D6區(qū)域命名為“MyRange”,則又可以使用下面的語句引用該區(qū)域: Range("MyRange" MyRange(7 Range("B2".Resize(5, 3(8 Range("A1:C5&qu

4、ot;.Offset(1, 1(9 若單元格B2為當前單元格,則可使用語句:Range(ActiveCell, ActiveCell.Offset(4, 2(10 若單元格D6為當前單元格,則可使用語句:Range("B2", ActiveCell-問題三:在VBA代碼中,如何使用變量實現(xiàn)對當前工作表中不確定單元格區(qū)域的引用?回答:有時,我們需要在代碼中依次獲取工作表中特定區(qū)域內(nèi)的單元格,這通常可以采取下面的幾種方式:(1 Range(“A” & i(2 Range(“A” & i & “:C” & i(3 Cells(i,1(4 Cells

5、(i,j(5Sheet.Range(Sheet.cells(i,1,Sheet.cells(i,5(后加其中,i、j為變量,在循環(huán)語句中指定i和j的范圍后,依次獲取相應單元格。-問題四:在VBA代碼中,如何擴展引用當前工作表中的單元格區(qū)域?回答:可以使用Resize屬性,例如:(1 ActiveCell.Resize(4, 4,表示自當前單元格開始創(chuàng)建一個4行4列的區(qū)域。(2 Range("B2".Resize(2, 2,表示創(chuàng)建B2:C3單元格區(qū)域。(3 Range("B2".Resize(2,表示創(chuàng)建B2:B3單元格區(qū)域。(4 Range("

6、;B2".Resize(, 2,表示創(chuàng)建B2:C2單元格區(qū)域。如果是在一個單元格區(qū)域(如B3:E6,或一個命名區(qū)域中(如將單元格區(qū)域B3:E6命名為“MyRange”使用Resize屬性,則只是相對于單元格區(qū)域左上角單元格擴展區(qū)域,例如:代碼Range("C3:E6".Resize(, 2,表示單元格區(qū)域C3:D6,并且擴展的單元格區(qū)域可不在原單元格區(qū)域內(nèi)。因此,可以知道Resize屬性是相對于當前活動單元格或某單元格區(qū)域中左上角單元格按指定的行數(shù)或列數(shù)擴展單元格區(qū)域。-問題五:在VBA代碼中,如何在當前工作表中基于當前單元格區(qū)域或指定單元格區(qū)域處理其它單元格區(qū)域

7、?回答:可以使用Offset屬性,例如:(1 Range("A1".Offset(2, 2,表示單元格C3。(2 ActiveCell.Offset(, 1,表示當前單元格下一列的單元格。(3 ActiveCell.Offset(1,表示當前單元格下一行的單元格。(4 Range("C3:D5".Offset(, 1,表示單元格區(qū)域D3:E5,即將整個區(qū)域偏移一列。從上面的代碼示例可知,Offset屬性從所指定的單元格開始按指定的行數(shù)和列數(shù)偏移,從而到達目的單元格,但偏移的行數(shù)和列數(shù)不包括指定單元格本身。-問題六:在VBA代碼中,如何在當前工作表中引用交

8、叉區(qū)域?回答:可以使用Intersect方法,例如:Intersect(Range("C3:E6", Range("D5:F8",表示單元格區(qū)域D5:E6,即單元格區(qū)域C3:E6與D5:F8相重迭的區(qū)域。-問題七:在VBA代碼中,如何在當前工作表中引用多個區(qū)域?回答:(1 可以使用Union方法,例如:Union(Range("C3:D4", Range("E5:F6",表示單元格區(qū)域C3:D4和E5:F6所組成的區(qū)域。Union方法可以將多個非連續(xù)區(qū)域連接起來成為一個區(qū)域,從而可以實現(xiàn)對多個非連續(xù)區(qū)域一起進行操作

9、。(2 也可以使用下面的代碼:Range("C3:D4, E5:F6"或C3:D4, E5:F6注意:Range("C3:D4", "F5:G6",表示單元格區(qū)域C3:G6,即將兩個區(qū)域以第一個區(qū)域左上角單元格為起點,以第二個區(qū)域右下角單元格為終點連接成一個新區(qū)域。同時,在引用區(qū)域后使用Rows屬性和Columns屬性時,注意下面代碼的區(qū)別:Range("C3:D4", "F8:G10".Rows.Count,返回的值為8;Range("C3:D4,F8:G10".Rows.

10、Count,返回的值為2,即只計算第一個單元格區(qū)域。-問題八:在VBA代碼中,如何引用當前工作表中活動單元格或指定單元格所在的區(qū)域(當前區(qū)域?回答:可以使用CurrentRegion屬性,例如:(1 ActiveCell.CurrentRegion,表示活動單元格所在的當前區(qū)域。(2 Range("D5".CurrentRegion,表示單元格D5所在的當前區(qū)域。當前區(qū)域是指周圍由空行或空列所圍成的區(qū)域。該屬性的詳細使用參見CurrentRegion屬性示例一文。問題九:在VBA代碼中,如何引用當前工作表中已使用的區(qū)域?回答:可以使用UsedRange屬性,例如:(1 Ac

11、tivesheet.UsedRange,表示當前工作表中已使用的區(qū)域。(2 Worksheets("sheet1".UsedRange,表示工作表sheet1中已使用的區(qū)域。與CurrentRegion屬性不同的是,該屬性代表工作表中已使用的單元格區(qū)域,包括顯示為空行,但已進行過格式的單元格區(qū)域。該屬性的詳細使用參見解析UsedRange屬性一文。-問題十:如何在單元格區(qū)域內(nèi)指定特定的單元格?回答:可以使用Item屬性,例如:(1 Range("A1:B10".Item(5,3指定單元格C5,這個單元格處于以區(qū)域中左上角單元格A1(即區(qū)域中第1行第1列的

12、單元格為起點的第5行第3列。因為Item屬性為默認屬性,因此也可以簡寫為:Range("A1:B10"(5,3。如果將A1:B10區(qū)域命名為”MyRange”,那么Range("MyRange"(5,3也指定單元格C5。(2 Range("A1:B10"(12,13指定單元格M12,即用這種方式引用單元格,該單元格不必一定要包含在區(qū)域內(nèi)。同時,也不需要索引數(shù)值是正值,例如: Range("D4:F6"(0,0代表單元格C3; Range("D4:F6"(-1,-2代表單元格A2。而Range(&

13、quot;D4:F6"(1,1代表單元格D4。(3 也可以在單元格區(qū)域中循環(huán),例如:Range("D4:F6"(2,2(3,4代表單元格H7,即該單元格位于作為左上角單元格E5的第3行第4列(因為E5是開始于區(qū)域中左上角單元格D4起的第2行第2列。(4 也能使用一個單個的索引數(shù)值進行引用。計數(shù)方式為從左向右,即在區(qū)域中的第一行開始從左向右計數(shù),第一行結束后,然后從第二行開始從左到右接著計數(shù),依次類推。(注:從區(qū)域中第一行第一個單元格開始計數(shù),當?shù)谝恍薪Y束時,轉入第二行最左邊的單元格,這樣按一行一行從左向右依次計數(shù)。以單元格區(qū)域中第1個單元格開始,按上述規(guī)則依次為第

14、2個單元格、第3個單元格.等等,例如:Range("A1:B2"(1 代表單元格A1;Range("A1:B2"(2 代表單元格B1;Range("A1:B2"(3 代表單元格A2;Range("A1:B2"(4 代表單元格B2。這種方法可在工作表中連續(xù)向下引用單元格(即不一定是在單元格區(qū)域內(nèi),但在遵循相同的規(guī)律,例如:Range("A1:B2"(5代表單元格A3;Range("A1:B2"(14代表單元格B7,等等。也可以使用單個的負數(shù)索引值。這種使用單個索引值的方法對遍歷

15、列是有用的,例如,Range("D4"(1代表單元格D4,Range("D4"(2代表單元格D5,Range ("D4"(11代表單元格D14,等等。同理,稍作調(diào)整后也可遍歷行,例如:Range("D4".Columns(2代表單元格E4,Range("D4".Columns(5指定單元格H4,等等。(5當與對象變量配合使用時,Item屬性能提供簡潔并有效的代碼,例如:Set rng = Worksheets(1.a1定義了對象變量后,像單元格方法一樣,Item屬性允許使用兩個索引數(shù)值引用工作表

16、中的任一單元格,例如,rng(3,4指定單元格D3。(By Chip Pearson-問題十一:在VBA代碼中,如何引用當前工作表中的整行或整列?回答:見下面的示例代碼:(1 Range("C:C".Select,表示選擇C列。Range("C:E".Select,表示選擇C列至E列。(2 Range("1:1".Select,表示選擇第一行。Range("1:3".Select,表示選擇第1行至第3行。(3 Range("C:C".EntireColumn,表示C列;Range("D

17、1".EntireColumn,表示D列。同樣的方式,也可以選擇整行,然后可以使用如AutoFit方法對整列或整行進行調(diào)整。-問題十二:在VBA代碼中,如何引用當前工作表中的所有單元格?回答:可以使用下面的代碼:(1 Cells,表示當前工作表中的所有單元格。(2 Range(Cells(1, 1, Cells(Cells.Rows.Count, Cells. Columns.Count,其中Cells.Rows表示工作表所有行,Cells. Columns表示工作表所有列。-問題十三:在VBA代碼中,如何引用工作表中的特定單元格區(qū)域?回答:在工作表中,您可能使用過“定位條件”對話框

18、??梢酝ㄟ^選擇菜單“編輯定位”,單擊“定位”對話框中的“定位條件”按鈕顯示該對話框。這個對話框可以允許用戶選擇特定的單元格。例如:(1 Worksheets("sheet1".Cells.SpecialCells(xlCellTypeAllFormatConditions,表示工作表sheet1中由帶有條件格式的單元格所組成的區(qū)域。(2 ActiveCell.CurrentRegion.SpecialCells(xlCellTypeBlanks,表示當前工作表中活動單元格所在區(qū)域中所有空白單元格所組成的區(qū)域。當然,還有很多常量和值的組合,可以讓您實現(xiàn)特定單元格的查找并引用。參見探討在工作表中找到最后一行一文。-問題十四:在VBA代碼中,如何引用其它工作表或其它工作簿中的單元格區(qū)域?回答:要引用其它工作表或其它工作簿中

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論