国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
在VBA代碼中引用工作表單元格區(qū)域的方式小結
在VBA代碼中引用工作表單元格區(qū)域的方式小結
fanjy 發(fā)表于 2006-11-12 15:06:00

在VBA代碼中引用Excel工作表中單元格區(qū)域的方式小結
分類:ExcelVBA>>ExcelVBA對象模型編程>>常用對象>>Range對象

在使用ExcelVBA進行編程時,我們通常需要頻繁地引用單元格區(qū)域,然后再使用相應的屬性和方法對區(qū)域進行操作。所謂單元格區(qū)域,指的是單個的單元格、或者是由多個單元格組成的區(qū)域、或者是整行、整列等。下面,我們設定一些情形,以問答的形式對引用單元格區(qū)域的方式進行歸納。

問題一:在VBA代碼中,如何引用當前工作表中的單個單元格(例如引用單元格C3)?
回答:
可以使用下面列舉的任一方式對當前工作表中的單元格(C3)進行引用。
(1) Range("C3")
(2) [C3]
(3) Cells(3, 3)
(4) Cells(3, "C")
(5) Range("C4").Offset(-1)
Range("D3").Offset(, -1)
Range("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ū)域,有哪些方式?
回答:
可以使用下面列舉的任一方式對當前工作表中單元格區(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").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(i,j)
其中,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("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ū)域?
回答:
可以使用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代碼中,如何在當前工作表中引用交叉區(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ū)域一起進行操作。
(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.Count,返回的值為2,即只計算第一個單元格區(qū)域。

問題八:在VBA代碼中,如何引用當前工作表中活動單元格或指定單元格所在的區(qū)域(當前區(qū)域)?
回答:
可以使用CurrentRegion屬性,例如:
(1) ActiveCell.CurrentRegion,表示活動單元格所在的當前區(qū)域。
(2) Range("D5").CurrentRegion,表示單元格D5所在的當前區(qū)域。
當前區(qū)域是指周圍由空行或空列所圍成的區(qū)域。該屬性的詳細使用參見《CurrentRegion屬性示例》一文。

問題九:在VBA代碼中,如何引用當前工作表中已使用的區(qū)域?
回答:
可以使用UsedRange屬性,例如:
(1) Activesheet.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列的單元格)為起點的第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("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束時,轉(zhuǎn)入第二行最左邊的單元格,這樣按一行一行從左向右依次計數(shù)。以單元格區(qū)域中第1個單元格開始,按上述規(guī)則依次為第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ù)索引值。
這種使用單個索引值的方法對遍歷列是有用的,例如,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ù)值引用工作表中的任一單元格,例如,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("D1").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ū)域?
回答:
在工作表中,您可能使用過“定位條件”對話框。可以通過選擇菜單“編輯——定位”,單擊“定位”對話框中的“定位條件”按鈕顯示該對話框。這個對話框可以允許用戶選擇特定的單元格。例如:
(1) Worksheets("sheet1").Cells.SpecialCells(xlCellTypeAllFormatConditions),表示工作表sheet1中由帶有條件格式的單元格所組成的區(qū)域。
(2) ActiveCell.CurrentRegion.SpecialCells(xlCellTypeBlanks),表示當前工作表中活動單元格所在區(qū)域中所有空白單元格所組成的區(qū)域。
當然,還有很多常量和值的組合,可以讓您實現(xiàn)特定單元格的查找并引用。參見《探討在工作表中找到最后一行》一文。

問題十四:在VBA代碼中,如何引用其它工作表或其它工作簿中的單元格區(qū)域?
回答:
要引用其它工作表或其它工作簿中的單元格區(qū)域,只需在單元格對象前加上相應的引用對象即可,例如:
(1) Worksheets(“Sheet3”).Range(“C3:D5”),表示引用工作表sheet3中的單元格區(qū)域C3:D5。
(2) Workbooks(“MyBook.xls”).Worksheets(“sheet1”).Range(“B2”),表示引用MyBook工作簿中工作表Sheet1上的單元格B2。

問題十五:還有其它的一些情形嗎?
回答:
列舉如下:
(1) Cells(15),表示單元格O1,即可在Cells屬性中指定單元格數(shù)字來選擇單元格,其計數(shù)順序為自左至右、從上到下,又如Cells(257),表示單元格B1。
(2) Cells(, 256),表示單元格IV1,但是如果Cells(, 257),則會返回錯誤。

結語
我們用VBA對Excel進行處理,一般是對其工作表中的數(shù)據(jù)進行處理,因此,引用單元格區(qū)域是ExcelVBA編程中最基本的操作之一,只有確定了所處理的單元格區(qū)域,才能使用相應的屬性和方法進行下一步的操作。
上面列舉了一些引用單元格區(qū)域的情形和方式,可以看出,引用單元格區(qū)域有很多方式,有一些可能不常用,可以根據(jù)工作表的所處的環(huán)境和個人編程習慣進行選擇使用。
當然,在編寫程序時,也可能會將上面的一些屬性聯(lián)合使用,以達到選取特定操作對象的目的,例如Offset屬性、Resize屬性、CurrentRegion屬性、UsedRange屬性等的組合。
本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
VB 應用excel單元格方式
Excel VBA解讀(8):看看Excel的那些常用對象(續(xù)2)
VBA 常用技巧 第1章 Range(單元格)對象
[轉(zhuǎn)載]Excel中的VBA對象及其應用之二
Excel教程:實用的VBA代碼,趕緊收藏!
通過地址和索引號引用某個范圍的單元格
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服