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

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開(kāi)通VIP
Range對(duì)象應(yīng)用大全(1)

引子:本文以MSDN中《Developers Guide to the Excel 2007 Range Object》一文為線索,整理并歸納了自已以前學(xué)習(xí)Range對(duì)象時(shí)的一系列學(xué)習(xí)筆記。輯錄于此,供有興趣的朋友參考。
毫無(wú)疑問(wèn),Range對(duì)象是Excel對(duì)象模型中最重要的對(duì)象,幾乎所有與工作表有關(guān)的實(shí)質(zhì)性操作都涉及到Range對(duì)象,可以說(shuō),熟悉并熟練運(yùn)用Range對(duì)象是掌握Excel VBA編程的關(guān)鍵。下面,讓我們逐步了解、熟悉并開(kāi)始使用Range對(duì)象吧。

在VBA代碼中引用或選擇Excel工作表的單元格或單元格區(qū)域

在使用Excel VBA編程時(shí),我們通常需要頻繁地引用單元格區(qū)域,然后再使用相應(yīng)的屬性和方法對(duì)區(qū)域進(jìn)行操作。所謂單元格區(qū)域,指的是單個(gè)的單元格、或者包含連續(xù)或非連續(xù)的多個(gè)單元格組成的區(qū)域、或者是整行、整列、甚至是三維單元格區(qū)域等。
[應(yīng)用1]引用當(dāng)前工作表中的單個(gè)單元格(例如引用單元格C3)
可以使用下面列舉的任一方式引用當(dāng)前工作表中的單元格(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為當(dāng)前單元格,則可使用:ActiveCell
(7)若將C3單元格命名為“Range1”,則可使用:Range(“Range1″)或[Range1]
(8)Cells(4, 3).Offset(-1)
(9)Range(“A1″).Range(“C3″)
此外,可以使用下面的代碼選擇當(dāng)前工作表中的單元格D5:
ActiveSheet.Cells(5, 4).Select
或:ActiveSheet.Range(“D5″).Select
[應(yīng)用2]引用當(dāng)前工作表中的B2:D6單元格區(qū)域
可以使用下面列舉的任一方式引用當(dāng)前工作表中的單元格區(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”,則又可以使用下面的語(yǔ)句引用該區(qū)域:
① Range(“MyRange”)
② [MyRange]
(7)Range(“B2″).Resize(5, 3)
(8)Range(“A1:C5″).Offset(1, 1)
(9)若單元格B2為當(dāng)前單元格,則可使用語(yǔ)句:Range(ActiveCell, ActiveCell.Offset(4, 2))
(10)若單元格D6為當(dāng)前單元格,則可使用語(yǔ)句:Range(“B2″, ActiveCell)
下面的過(guò)程將單元格區(qū)域 A1:D5 的字體設(shè)置為加粗。


Sub FormatRange()      Workbooks("Book1").Sheets("Sheet1").Range("A1:D5") _          .Font.Bold = True  End Sub

Range(“A:A”)代表當(dāng)前工作表中的A 列,Range(“1:1″)代表當(dāng)前工作表中的第一行,Range(“A:C”)代表當(dāng)前工作表中從 A 列到 C 列的區(qū)域,Range(“1:5″)代表當(dāng)前工作表中從第一行到第五行的區(qū)域,Range(“1:1,3:3,8:8″)代表當(dāng)前工作表中第 1、3 和 8 行,Range(“A:A,C:C,F:F”)代表當(dāng)前工作表中的第A、C和F 列。
下面是給單元格賦值的幾個(gè)例子。
示例1:


Sub test1()      Worksheets("Sheet1").Range("A5").Value = 22      MsgBox "工作表Sheet1內(nèi)單元格A5中的值為" _         & Worksheets("Sheet1").Range("A5").Value  End Sub

示例2:


Sub test2()      Worksheets("Sheet1").Range("A1").Value = _      Worksheets("Sheet1").Range("A5").Value      MsgBox "現(xiàn)在A1單元格中的值也為" & _          Worksheets("Sheet1").Range("A5").Value  End Sub

示例3:


Sub test3()      MsgBox "用公式填充單元格,本例為隨機(jī)數(shù)公式"      Range("A1:H8").Formula = "=Rand()"  End Sub

示例4:


Sub test4()      Worksheets(1).Cells(1, 1).Value = 24      MsgBox "現(xiàn)在單元格A1的值為24"  End Sub

示例5:


Sub test5()      MsgBox "給單元格設(shè)置公式,求B2至B5單元格區(qū)域之和"      ActiveSheet.Cells(2, 1).Formula = "=Sum(B1:B5)"  End Sub

示例6:


Sub test6()      MsgBox "設(shè)置單元格C5中的公式."      Worksheets(1).Range("C5:C10").Cells(1, 1).Formula = "=Rand()"  End Sub

示例7:


Sub test7()      MsgBox "給命名區(qū)域賦值."      ActiveSheet.Range("MyCell").Value = 1  End Sub

其中,MyCell為單元格區(qū)域的名稱。
[應(yīng)用3]引用當(dāng)前工作表中不確定的單元格區(qū)域
有時(shí),我們需要在代碼中依次獲取工作表中特定區(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)語(yǔ)句中指定i和j的范圍后,依次獲取相應(yīng)單元格。
在下例中,Cells(6,1)返回Sheet1上的單元格A6,然后將Value屬性設(shè)置為 10。


Sub EnterValue()      Worksheets("Sheet1").Cells(6, 1).Value = 10  End Sub

因?yàn)榭梢杂米兞刻娲幪?hào),所以Cells屬性非常適合于在單元格區(qū)域中循環(huán),如下例中所示。


Sub CycleThrough()    
  Dim Counter As Integer  
    For Counter = 1 To 20       
   Worksheets("Sheet1").Cells(Counter, 3).Value = Counter    
  Next Counter
  End Sub

如果要同時(shí)更改某個(gè)區(qū)域中所有單元格的屬性(或?qū)⒎椒☉?yīng)用于該區(qū)域中的所有單元格),建議使用Range屬性。
[應(yīng)用4]擴(kuò)展引用當(dāng)前工作表中的單元格區(qū)域
可以使用Resize屬性,例如:
(1)ActiveCell.Resize(4, 4),表示自當(dāng)前單元格開(kāi)始創(chuàng)建一個(gè)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ū)域。
如果是在一個(gè)單元格區(qū)域(如B3:E6),或者一個(gè)命名區(qū)域中(如將單元格區(qū)域B3:E6命名為“MyRange”)使用Resize屬性,則只是相對(duì)于單元格區(qū)域左上角單元格擴(kuò)展區(qū)域,例如:
代碼Range(“C3:E6″).Resize(, 2),表示單元格區(qū)域C3:D6,并且擴(kuò)展的單元格區(qū)域可以不在原單元格區(qū)域內(nèi)。
因此,可以知道Resize屬性是相對(duì)于當(dāng)前活動(dòng)單元格或某單元格區(qū)域中左上角單元格按指定的行數(shù)或列數(shù)擴(kuò)展單元格區(qū)域。
再舉一些例子。
例1:要選擇當(dāng)前工作表中名為“Database”區(qū)域,然后將該區(qū)域向下擴(kuò)展5行,可以使用下面的代碼:


Range("Database").Select  Selection.Resize(Selection.Rows.Count + 5, Selection.Columns.Count).Select

例2:選擇名為“Database”區(qū)域下方4行右側(cè)3列的一個(gè)區(qū)域,然后擴(kuò)展2行和1列,可以使用下面的代碼:


Range("Database").Select  Selection.Offset(4, 3).Resize(Selection.Rows.Count + 2, Selection.Columns.Count + 1).Select

[應(yīng)用5]在當(dāng)前工作表中基于當(dāng)前單元格區(qū)域或指定單元格區(qū)域處理其它單元格區(qū)域
可以使用Offset屬性,例如:
(1)Range(“A1″).Offset(2, 2),表示單元格C3。
(2)ActiveCell.Offset(, 1),表示當(dāng)前單元格下一列的單元格。
(3)ActiveCell.Offset(1),表示當(dāng)前單元格下一行的單元格。
(4)Range(“C3:D5″).Offset(, 1),表示單元格區(qū)域D3:E5,即將整個(gè)區(qū)域偏移一列。
從上面的代碼示例可知,Offset屬性從所指定的單元格開(kāi)始按指定的行數(shù)和列數(shù)偏移,從而到達(dá)目的單元格,但偏移的行數(shù)和列數(shù)不包括指定單元格本身。正值表示向下和向右,負(fù)值表示向上和向左,零值則是指當(dāng)前單元格。
例如,要選擇距當(dāng)前單元格下面5行左側(cè)4列的單元格,可以使用下面的代碼:


ActiveCell.Offset(5, -4).Select

要選擇距當(dāng)前單元格上方2行右側(cè)3列的單元格,可以使用下面的代碼:


ActiveCell.Offset(-2, 3).Select

注意:一定要保證當(dāng)前單元格與所選單元格之間的距離在工作表范圍內(nèi),否則會(huì)出錯(cuò)。
又如,要選擇距單元格C7下方5行右側(cè)4列的單元格,可以使用下面的代碼:


ActiveSheet.Cells(7, 3).Offset(5, 4).Select

或:


ActiveSheet.Range("C7").Offset(5, 4).Select

再舉一些例子。
例如,要選擇與名為“Test”的區(qū)域大小相同但在該區(qū)域下方4行右側(cè)3列的一個(gè)區(qū)域,可以使用下面的代碼:


ActiveSheet.Range("Test").Offset(4, 3).Select

如果該命名區(qū)域不在當(dāng)前工作表中,可以先激活該工作表,然后再選擇,如下面的代碼:


Sheets("Sheet3").Activate  ActiveSheet.Range("Test").Offset(4, 3).Select

下面的例子計(jì)算移動(dòng)平均值:


Sub MovingAvg()      Dim rng As Range      Dim lngRow As Long      Set rng = Range("B1:B3")      For lngRow = 3 To 12          Cells(lngRow, "C").Value = WorksheetFunction.Sum(rng) / 3          Set rng = rng.Offset(1, 0)      Next lngRow  End Sub

上述代碼首先將B列中的前3個(gè)單元格設(shè)置為一個(gè)單元格區(qū)域,計(jì)算其平均值,并放置在單元格C3中。接著,Offset屬性將單元格區(qū)域下移一行但仍在B列,計(jì)算單元格區(qū)域B2:B4的平均值,并將結(jié)果放置到單元格C4。代碼重復(fù)上述過(guò)程直到單元格B12。
[應(yīng)用6]在當(dāng)前工作表中引用交叉區(qū)域
可以使用Intersect方法,例如:


Intersect(Range("C3:E6"), Range("D5:F8"))

表示單元格區(qū)域D5:E6,即單元格區(qū)域C3:E6與D5:F8相重迭的區(qū)域。
又如,要選擇名為“Test”和“Sample”的兩個(gè)區(qū)域的交叉區(qū)域,可以使用下面的代碼:


Application.Intersect(Range("Test"), Range("Sample")).Select

注意,兩個(gè)區(qū)域必須在同一工作表中。
注意,如果兩個(gè)區(qū)域不存在交叉,那么該方法返回Nothing。
例如,下面的代碼選擇兩個(gè)命名區(qū)域的交叉部分,如果不存在交叉,則顯示一條消息。


Sub IntersectSample()      Worksheets("Sheet1").Activate      Set Intersect = Application.Intersect(Range("rng1"), Range("rng2"))      If Intersect Is Nothing Then          MsgBox "不存在交叉區(qū)域."      Else          Intersect.Select      End If  End Sub

[應(yīng)用7]在當(dāng)前工作表中引用多個(gè)區(qū)域
(1)可以使用Union方法,將多個(gè)區(qū)域組合到一個(gè)Range對(duì)象中。例如:


Union(Range("C3:D4"), Range("E5:F6"))

表示單元格區(qū)域C3:D4和E5:F6所組成的區(qū)域。
Union方法可以將多個(gè)非連續(xù)區(qū)域連接起來(lái)成為一個(gè)區(qū)域,從而可以實(shí)現(xiàn)對(duì)多個(gè)非連續(xù)區(qū)域一起進(jìn)行操作。
(2)也可以使用下面的代碼,即通過(guò)在兩個(gè)或多個(gè)引用之間插入逗號(hào),可使用Range屬性引用多個(gè)區(qū)域:


Range("C3:D4, E5:F6")


[C3:D4, E5:F6]

注意:Range(“C3:D4″, “F5:G6″),表示單元格區(qū)域C3:G6,即將兩個(gè)區(qū)域以第一個(gè)區(qū)域左上角單元格為起點(diǎn),以第二個(gè)區(qū)域右下角單元格為終點(diǎn)連接成一個(gè)新區(qū)域。
同時(shí),在引用區(qū)域后使用Rows屬性和Columns屬性時(shí),注意下面代碼的區(qū)別:
①Range(“C3:D4″, “F8:G10″).Rows.Count,返回的值為8;
②Range(“C3:D4,F8:G10″).Rows.Count,返回的值為2,即只計(jì)算第一個(gè)單元格區(qū)域。
(3)可用Areas屬性引用選定的單元格區(qū)域或多塊選定區(qū)域中的區(qū)域集合。
例1:以下示例清除了 Sheet1 上三個(gè)區(qū)域的內(nèi)容。


Sub ClearRanges()      Worksheets("Sheet1").Range("C5:D9,G9:H16,B14:D18"). _          ClearContents  End Sub

命名區(qū)域使得用Range屬性處理多個(gè)區(qū)域更加容易。以下示例可在所有這三個(gè)命名區(qū)域處于同一工作表時(shí)運(yùn)行。


Sub ClearNamed()      Range("MyRange, YourRange, HisRange").ClearContents  End Sub

例2:為了同時(shí)選擇名為“Test”和“Sample”的兩個(gè)區(qū)域,可以使用下面的代碼:


Application.Union(Range("Test"), Range("Sample")).Select

注意,這兩個(gè)區(qū)域須在同一工作表中,如下面的代碼:


Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet1!C3:D4"))

但Union方法不能處理不同工作表中的區(qū)域,可下面的代碼:


Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet2!C3:D4"))

將會(huì)出錯(cuò)。
例3:以下示例創(chuàng)建了名為 myMultipleRange 的 Range 對(duì)象,并將其定義為區(qū)域 A1:B2 和 C3:D4 的組合,然后將該組合區(qū)域的字體設(shè)置為加粗。


Sub MultipleRange()      Dim r1, r2, myMultipleRange As Range      Set r1 = Sheets("Sheet1").Range("A1:B2")      Set r2 = Sheets("Sheet1").Range("C3:D4")      Set myMultipleRange = Union(r1, r2)      myMultipleRange.Font.Bold = True  End Sub

例4:下述過(guò)程計(jì)算選定區(qū)域中的塊數(shù)目,如果有多個(gè)塊,就顯示一則警告消息。


Sub FindMultiple()      If Selection.Areas.Count > 1 Then          MsgBox "不能對(duì)多個(gè)選區(qū)進(jìn)行操作."      End If  End Sub

[應(yīng)用8]引用當(dāng)前工作表中活動(dòng)單元格或指定單元格所在的區(qū)域(當(dāng)前區(qū)域)
可以使用CurrentRegion屬性,例如:
(1)ActiveCell.CurrentRegion,表示活動(dòng)單元格所在的當(dāng)前區(qū)域。
(2)Range(“D5″).CurrentRegion,表示單元格D5所在的當(dāng)前區(qū)域。
當(dāng)前區(qū)域是指周圍由空行或空列所圍成的區(qū)域。
下面的示例將當(dāng)前工作表當(dāng)前區(qū)域的值復(fù)制到剪貼板,然后將這些值插入到新工作表:


Sub CopyCurrentRegionValue()      Range("D5").Activate      ActiveCell.CurrentRegion.Select      Selection.Copy      Sheets.Add After:=Sheets(Sheets.Count)      Sheets(Sheets.Count).Name = "Sample"      Sheets("Sample").Select      Range("D5").Activate      ActiveSheet.Paste  End Sub

[應(yīng)用9]引用當(dāng)前工作表中已使用的區(qū)域
可以使用UsedRange屬性,例如:
(1)Activesheet.UsedRange,表示當(dāng)前工作表中已使用的區(qū)域。
(2)Worksheets(“sheet1″).UsedRange,表示工作表sheet1中已使用的區(qū)域。
與CurrentRegion屬性不同的是,該屬性代表工作表中已使用的單元格區(qū)域,包括顯示為空行,但已進(jìn)行過(guò)格式的單元格區(qū)域。


'選取當(dāng)前工作表中已使用的單元格區(qū)域  Sub SelectUsedRange()      MsgBox "選取當(dāng)前工作表中已使用的單元格區(qū)域" _         & vbCrLf & "并顯示其地址"      ActiveSheet.UsedRange.Select      MsgBox ActiveSheet.UsedRange.Address  End Sub

[應(yīng)用10]在單元格區(qū)域內(nèi)指定特定的單元格
可以使用Item屬性,例如:
(1)Range(“A1:B10″).Item(5,3)指定單元格C5,這個(gè)單元格處于以區(qū)域中左上角單元格A1(即區(qū)域中第1行第1列的單元格)為起點(diǎn)的第5行第3列。因?yàn)镮tem屬性為默認(rèn)屬性,因此也可以簡(jiǎn)寫為: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í),也不需要索引數(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列(因?yàn)镋5是開(kāi)始于區(qū)域中左上角單元格D4起的第2行第2列)。
(4)也能使用一個(gè)單個(gè)的索引數(shù)值進(jìn)行引用。計(jì)數(shù)方式為從左向右,即在區(qū)域中的第一行開(kāi)始從左向右計(jì)數(shù),第一行結(jié)束后,然后從第二行開(kāi)始從左到右接著計(jì)數(shù),依次類推。(注:從區(qū)域中第一行第一個(gè)單元格開(kāi)始計(jì)數(shù),當(dāng)?shù)谝恍薪Y(jié)束時(shí),轉(zhuǎn)入第二行最左邊的單元格,這樣按一行一行從左向右依次計(jì)數(shù)。以單元格區(qū)域中第1個(gè)單元格開(kāi)始,按上述規(guī)則依次為第2個(gè)單元格、第3個(gè)單元格….等等),例如:
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,等等。
也可以使用單個(gè)的負(fù)數(shù)索引值。
這種使用單個(gè)索引值的方法對(duì)遍歷列是有用的,例如,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)當(dāng)與對(duì)象變量配合使用時(shí),Item屬性能提供簡(jiǎn)潔并有效的代碼,例如:


Set rng = Worksheets(1).[A1]

定義了對(duì)象變量后,像單元格方法一樣,Item屬性允許使用兩個(gè)索引數(shù)值引用工作表中的任一單元格,例如,rng(3,4)指定單元格D3。
[應(yīng)用11]引用當(dāng)前工作表中的整行或整列
見(jiàn)下面的示例代碼:
(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方法對(duì)整列或整行進(jìn)行調(diào)整。
此外,可用Rows屬性或Columns屬性來(lái)處理整行或整列。這兩個(gè)屬性返回代表單元格區(qū)域的Range對(duì)象。在下例中,Rows(1)返回Sheet1上的第一行,然后將區(qū)域字體加粗。


Sub RowBold()      Worksheets("Sheet1").Rows(1).Font.Bold = True  End Sub

另,Rows(1)代表當(dāng)前工作表中的第一行,Rows代表當(dāng)前工作表中的所有的行,Columns(1)代表當(dāng)前工作表中的第一列,Columns(“A”)代表當(dāng)前工作表中的第一列,Columns代表當(dāng)前工作表中所有的列。
若要同時(shí)處理若干行或列,可創(chuàng)建一個(gè)對(duì)象變量并使用Union方法,將對(duì)Rows屬性或Columns屬性的多個(gè)調(diào)用組合起來(lái)。下例將活動(dòng)工作簿中第一張工作表上的第一行、第三行和第五行的字體設(shè)置為加粗。


Sub SeveralRows()      Worksheets("Sheet1").Activate      Dim myUnion As Range      Set myUnion = Union(Rows(1), Rows(3), Rows(5))      myUnion.Font.Bold = True  End Sub

[應(yīng)用12]引用當(dāng)前工作表中的所有單元格
可以使用下面的代碼:
(1)Cells,表示當(dāng)前工作表中的所有單元格。
(2)Range(Cells(1, 1), Cells(Cells.Rows.Count, Cells. Columns.Count)),其中Cells.Rows表示工作表所有行,Cells. Columns表示工作表所有列。
下面的過(guò)程清除活動(dòng)工作簿中Sheet1上所有單元格的內(nèi)容。


Sub ClearSheet()      Worksheets("Sheet1").Cells.ClearContents  End Sub

[應(yīng)用13]引用工作表中的特定單元格區(qū)域
在工作表中,您可能使用過(guò)“定位條件”對(duì)話框??梢酝ㄟ^(guò)選擇菜單“編輯——定位”,單擊“定位”對(duì)話框中的“定位條件”按鈕顯示該對(duì)話框。這個(gè)對(duì)話框可以允許用戶選擇特定的單元格。例如:
(1)Worksheets(“sheet1″).Cells.SpecialCells(xlCellTypeAllFormatConditions),表示工作表sheet1中由帶有條件格式的單元格所組成的區(qū)域。
(2)ActiveCell.CurrentRegion.SpecialCells(xlCellTypeBlanks),表示當(dāng)前工作表中活動(dòng)單元格所在區(qū)域中所有空白單元格所組成的區(qū)域。
(3)選擇所有公式單元格


Sub SelectSpecialCells()      MsgBox "選擇當(dāng)前工作表中所有公式單元格"      ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas).Select  End Sub

當(dāng)然,還有很多常量和值的組合,可以讓您實(shí)現(xiàn)特定單元格的查找并引用。
[應(yīng)用14]引用命名區(qū)域
使用名稱比使用A1樣式記號(hào)更容易標(biāo)識(shí)單元格區(qū)域。若要命名選定的單元格區(qū)域,請(qǐng)單擊編輯欄左端的名稱框,鍵入名稱,再按回車鍵。
例1:要選擇當(dāng)前工作表中名為“Test”的區(qū)域,可以使用下面的代碼:


Range("Test").Select

或:


Application.Goto "Test"

例2:選擇同一工作簿中另一工作表上名為“Test”的區(qū)域,可使用下面的代碼:


Application.Goto Sheets("Sheet1").Range("Test")

也可以先激活工作表,再選擇:


Sheets("Sheet1").Activate  Range("Test").Select

例3:要選擇不同工作簿中工作表上名為“Test”的區(qū)域,可使用下面的代碼:


Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet2").Range("Test")

也可以先激活工作表,再選擇:


Workbooks("BOOK2.XLS").Sheets("Sheet2").Activate  Range("Test").Select

例4:以下示例引用名為“MyBook.xls”的工作簿中名為“MyRange”的區(qū)域,并將該區(qū)域的字體設(shè)置為斜體:


Sub FormatRange()      Range("MyBook.xls!MyRange").Font.Italic = True  End Sub

例5:以下示例引用名為“Report.xls”的工作簿中特定工作表的區(qū)域“Sheet1!Sales”,并添加邊框線:


Sub FormatSales()      Range("[Report.xls]Sheet1!Sales").BorderAround Weight:=xlThin  End Sub

例6:要選定命名區(qū)域,可以使用GoTo方法。該方法將激活工作簿和工作表,然后選定該區(qū)域。


Sub ClearRange()      Application.Goto Reference:="MyBook.xls!MyRange"      Selection.ClearContents  End Sub

以下示例顯示對(duì)于活動(dòng)工作簿將如何編寫與上例相同的過(guò)程。


Sub ClearRange()      Application.Goto Reference:="MyRange"      Selection.ClearContents  End Sub

例7:下例用For Each…Next循環(huán)語(yǔ)句在命名區(qū)域中的每一個(gè)單元格上循環(huán)。如果該區(qū)域中的任一單元格的值超過(guò)limit的值,就將該單元格的顏色更改為黃色。


Sub ApplyColor()      Const Limit As Integer = 25      For Each c In Range("MyRange")          If c.Value > Limit Then              c.Interior.ColorIndex = 27          End If      Next c  End Sub

[應(yīng)用15]選擇特別指定的單元格或單元格區(qū)域
下面的示例使用了如下圖1所示的工作表。


圖1:示例數(shù)據(jù)
例1:選擇連續(xù)數(shù)據(jù)列中的最后一個(gè)單元格
要選擇一個(gè)列A中最后一個(gè)單元格,可以使用下面的代碼:


ActiveSheet.Range("A1").End(xlDown).Select

在圖1所示的工作表中運(yùn)行上述代碼,將選擇單元格A4。


'選取最下方的單元格  Sub SelectEndCell()      MsgBox "選取當(dāng)前單元格區(qū)域內(nèi)最下方的單元格"      ActiveCell.End(xlDown).Select  End Sub

可以改變參數(shù)xlDown以選取最左邊、最右邊、最上方的單元格。
例2:選擇連續(xù)數(shù)據(jù)列底部的空單元格
要選擇連續(xù)單元格區(qū)域下面的空單元格,可以使用下面的代碼:


ActiveSheet.Range("A1").End(xlDown).Offset(1, 0).Select

在圖1所示的工作表中運(yùn)行上述代碼,將選擇單元格A5。
例3:選擇某列中連續(xù)數(shù)據(jù)單元格區(qū)域
要選擇列A中連續(xù)數(shù)據(jù)單元格區(qū)域,可以使用下面的代碼:


ActiveSheet.Range("A1", ActiveSheet.Range("A1").End(xlDown)).Select

或:


ActiveSheet.Range("A1:" & ActiveSheet.Range("A1").End(xlDown).Address).Select

在圖1所示的工作表中運(yùn)行上述代碼,將選擇單元格區(qū)域A1:A4。
例4:選擇某列中非連續(xù)數(shù)據(jù)單元格區(qū)域
要選擇某列中非連續(xù)數(shù)據(jù)單元格區(qū)域,可以使用下面的代碼:


ActiveSheet.Range("A1", ActiveSheet.Range("A65536").End(xlUp)).Select

或:


ActiveSheet.Range("A1:" & ActiveSheet.Range("A1").End(xlDown).Address).Select

在圖1所示的工作表中運(yùn)行上述代碼,將選擇單元格區(qū)域A1:A6。
例5:選擇一個(gè)矩形(規(guī)則的)單元格區(qū)域
要選擇圍繞某單元格的一個(gè)矩形區(qū)域,可以使用CurrentRegion屬性。CurrentRegion屬性將選擇四周被空行和空列圍繞的區(qū)域,如下面的代碼:


ActiveSheet.Range("A1").CurrentRegion.Select

在圖1所示的工作表中運(yùn)行上述代碼,將選擇單元格區(qū)域A1:C4。也可以使用下面的代碼:


ActiveSheet.Range("A1", ActiveSheet.Range("A1").End(xlDown).End(xlToRight)).Select

或:


ActiveSheet.Range("A1:" & ActiveSheet.Range("A1").End(xlDown).End(xlToRight).Address).Select

若想選擇單元格區(qū)域A1:C6,可使用下面的代碼:


lastCol = ActiveSheet.Range("A1").End(xlToRight).Column  lastRow = ActiveSheet.Cells(65536, lastCol).End(xlUp).Row  ActiveSheet.Range("A1", ActiveSheet.Cells(lastRow, lastCol)).Select

或:


lastCol = ActiveSheet.Range("A1").End(xlToRight).Column  lastRow = ActiveSheet.Cells(65536, lastCol).End(xlUp).Row  ActiveSheet.Range("A1:" & ActiveSheet.Cells(lastRow, lastCol).Address).Select

[應(yīng)用16]選擇多個(gè)不同長(zhǎng)度的非連續(xù)列
例如,有如下圖2所示的工作表:


圖2:示例數(shù)據(jù)
要同時(shí)選擇A列和C列中的數(shù)據(jù),即單元格區(qū)域A1:A3和C1:C6,可使用下面的代碼:


StartRange = "A1"  EndRange = "C1"  Set a = Range(StartRange, Range(StartRange).End(xlDown))  Set b = Range(EndRange, Range(EndRange).End(xlDown))  Union(a, b).Select

[應(yīng)用17]設(shè)置當(dāng)前單元格的前一個(gè)單元格和后一個(gè)單元格的值


Sub SetCellValue()      MsgBox "將當(dāng)前單元格中前面的單元格值設(shè)為""我前面的單元格""" & vbCrLf _        & "后面的單元格值設(shè)為""我后面的單元格"""      ActiveCell.Previous.Value = "我前面的單元格"      ActiveCell.Next.Value = "我后面的單元格"  End Sub

[應(yīng)用18]引用其它工作表或其它工作簿中的單元格區(qū)域
要引用其它工作表或其它工作簿中的單元格區(qū)域,只需在單元格對(duì)象前加上相應(yīng)的引用對(duì)象即可,例如:
(1)Worksheets(“Sheet3″).Range(“C3:D5″),表示引用工作表sheet3中的單元格區(qū)域C3:D5。
(2)Workbooks(“MyBook.xls”).Worksheets(“sheet1″).Range(“B2″),表示引用MyBook工作簿中工作表Sheet1上的單元格B2。
此外,要選擇同一工作簿中另一工作表上的單元格E6,可以使用下面的代碼:


Application.Goto ActiveWorkbook.Sheets("Sheet2").Cells(6, 5)

或:


Application.Goto (ActiveWorkbook.Sheets("Sheet2").Range("E6"))

也可以先激活該工作表,然后再選擇:


Sheets("Sheet2").Activate  ActiveSheet.Cells(6, 5).Select

同樣,例如要選擇另一工作簿中某工作表上的單元格F7,可以使用下面的代碼:


Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Cells(7, 6)

或:


Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("F7")

也可以先激活該工作簿中的工作表,然后再選擇:


Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate  ActiveSheet.Cells(7, 6).Select

又如,要選擇同一工作簿中另一工作表上的單元格區(qū)域D3:E11,可以使用下面的代碼:


Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3:E11")

或:


Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3", "E11")

也可以先激活該工作表,然后再選擇:


Sheets("Sheet3").Activate  ActiveSheet.Range(Cells(3, 4), Cells(11, 5)).Select

要選擇另一工作簿中某工作表上的單元格區(qū)域E4:F12,可以使用下面的代碼:


Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4:F12")

或:


Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4", "F12")

也可以先激活該工作表,然后再選擇:


Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate  ActiveSheet.Range(Cells(4, 5), Cells(12, 6)).Select

說(shuō)明:使用Application.Goto方法,如果指定另一工作表(不是當(dāng)前工作表)中的指定區(qū)域,在Range屬性中使用兩個(gè)Cells屬性時(shí),則必須包括Sheets對(duì)象,如:


Application.Goto Sheets("Sheet1").Range(Sheets("Sheet1").Range(Sheets("Sheet1").Cells(2, 3), Sheets("Sheet1").Cells(4, 5)))

[應(yīng)用19]處理三維區(qū)域
如果要處理若干工作表上相同位置的單元格區(qū)域,可用Array函數(shù)選定兩張或多張工作表。下例設(shè)置三維單元格區(qū)域的邊框格式。


Sub FormatSheets()      Sheets(Array("Sheet2", "Sheet3", "Sheet5")).Select      Range("A1:H1").Select      Selection.Borders(xlBottom).LineStyle = xlDouble  End Sub

下例應(yīng)用FillAcrossSheets方法,將Sheet2上區(qū)域中的格式和所有數(shù)據(jù)傳送到活動(dòng)工作簿中所有工作表上的相應(yīng)區(qū)域。


Sub FillAll()      Worksheets("Sheet2").Range("A1:H1") _          .Borders(xlBottom).LineStyle = xlDouble      Worksheets.FillAcrossSheets (Worksheets("Sheet2") _          .Range("A1:H1"))  End Sub

[應(yīng)用20]使用Range對(duì)象變量引用單元格
如果將對(duì)象變量設(shè)置為Range對(duì)象,即可以使用變量名輕松地操作單元格區(qū)域。
以下過(guò)程將創(chuàng)建對(duì)象變量myRange,然后將活動(dòng)工作簿中Sheet1上的區(qū)域A1:D5賦予該變量。隨后的語(yǔ)句用該變量名稱代替Range對(duì)象,以修改該區(qū)域的屬性。


Sub Random()      Dim myRange As Range      Set myRange = Worksheets("Sheet1").Range("A1:D5")      myRange.Formula = "=RAND()"      myRange.Font.Bold = True  End Sub

[應(yīng)用21]其它的引用方式
對(duì)于Excel 2007以前的版本來(lái)說(shuō):
(1)Cells(15),表示單元格O1,即可在Cells屬性中指定單元格數(shù)字來(lái)選擇單元格,其計(jì)數(shù)順序?yàn)樽宰笾劣?、從上到下,又如Cells(257),表示單元格B1。
(2)Cells(, 256),表示單元格IV1,但是如果Cells(, 257),則會(huì)返回錯(cuò)誤。
Excel 2007中增加了工作表列數(shù)和行數(shù),因此上述限制相應(yīng)改變。
說(shuō)明:上面的一些代碼在選擇單元格或單元格區(qū)域時(shí),先激活工作表后選擇,這只是為了說(shuō)明的方便。實(shí)際上,在操作單元格時(shí),只要引用了相應(yīng)的單元格或單元格區(qū)域,不必先激活工作表。
小結(jié):我們使用VBA對(duì)Excel進(jìn)行處理,一般是對(duì)其工作表中的數(shù)據(jù)進(jìn)行處理,因此,引用單元格區(qū)域是ExcelVBA編程中最基本的操作之一,只有確定了所處理的單元格區(qū)域,才能使用相應(yīng)的屬性和方法進(jìn)行下一步的操作。
上面列舉了一些引用單元格區(qū)域的情形和方式,可以看出,引用單元格區(qū)域有很多方式,有一些可能不常用,可以根據(jù)工作表的所處的環(huán)境和個(gè)人編程習(xí)慣進(jìn)行選擇使用。
當(dāng)然,在編寫程序時(shí),也可能會(huì)將上面的一些屬性聯(lián)合使用,以達(dá)到選取特定操作對(duì)象的目的,例如Offset屬性、Resize屬性、CurrentRegion屬性、UsedRange屬性等的組合。
下面對(duì)Range對(duì)象的一些常用屬性和方法進(jìn)行簡(jiǎn)單的小結(jié)。
1、Activate與Select
試驗(yàn)下面的過(guò)程:


Sub SelectAndActivate()      Range("B3:E10").Select      Range("C5").Activate  End Sub

其結(jié)果如下圖所示:


圖3:Select與Activate
即選取單元格區(qū)域B3:E10并將單元格C5選中。
Selection指單元格區(qū)域B3:E10,而ActiveCell則是單元格C5;ActiveCell代表單個(gè)的單元格,而Selection則可以代表單個(gè)單元格,也可以代表單元格區(qū)域。
2、Range屬性
可以使用Application對(duì)象的Range屬性引用Range對(duì)象,如


Application.Range("B2") '代表當(dāng)前工作表中的單元格B2

若引用當(dāng)前工作表中的單元格,也可以忽略前面的Application對(duì)象。


Range("A1:D10") '代表當(dāng)前工作表中的單元格區(qū)域A1:D10  Range("A1:A10,C1:C10,E1:E10") '代表當(dāng)前工作表中非連續(xù)的三個(gè)區(qū)域組成的單元格區(qū)域

Range屬性也接受指向單元格區(qū)域?qū)堑膬蓚€(gè)參數(shù),如:


Range("A1","D10") '代表單元格區(qū)域A1:D10

當(dāng)然,Range屬性也接受單元格區(qū)域名稱,如:


Range("Data") '代表名為Data的數(shù)據(jù)區(qū)域

Range屬性的參數(shù)可以是對(duì)象也可以是字符串,如:


Range("A1",Range("LastCell"))

3、單元格引用的快捷方式
可以在引用區(qū)域兩側(cè)加上方括號(hào)來(lái)快速引用單元格區(qū)域,如:
[B2]
[A1:D10]
[A1:A10,C1:C10,E1:E10]
[Data]
但其引用的是絕對(duì)區(qū)域。
4、Cells屬性
可以使用Cells屬性來(lái)引用Range對(duì)象。如:


ActiveSheet.Cells  Application.Cells '引用當(dāng)前工作表中的所有單元格  Cell(2,2)  Cell(2,"B") '引用單元格B2  Range(Cells(1,1),Cells(10,5)) '引用單元格區(qū)域A1:E10

若想在一個(gè)單元格區(qū)域中循環(huán)時(shí),使用Cells屬性是很方便的。
也可以使用Cells屬性進(jìn)行相對(duì)引用,如:


Range("D10:G20").Cells(2,3) '表示引用單元格區(qū)域D10:G20中第2行第3列的單元格,即單元格F11

也可使用語(yǔ)句:Range(“D10″).Cells(2,3)達(dá)到同樣的引用效果。
5、Offset屬性
Offset屬性基于當(dāng)前單元格按所給參數(shù)進(jìn)行偏移,與Cells屬性不同的是,它基于0即基準(zhǔn)單元格為0,如:
Range(“A10″).Cells(1,1)和Range(“A10″).Offset(0,0)都表示單元格A10
當(dāng)想引用于基準(zhǔn)單元格區(qū)域同樣大小的單元格區(qū)域時(shí),則Offset屬性是有用的。
6、Resize屬性
可使用Resize屬性獲取相對(duì)于原單元格區(qū)域左上角單元格指定大小的區(qū)域。
7、SpecialCells方法
SpecialCells方法對(duì)應(yīng)于“定位條件”對(duì)話框,如圖05-02所示:

圖4:“定位條件”對(duì)話框
8、CurrentRegion屬性
使用CurrentRegion屬性可以選取當(dāng)前單元格所在區(qū)域,即周圍是空行和空列所圍成的矩形區(qū)域,等價(jià)于“Ctrl+Shift+*”快捷鍵。
9、End屬性
End屬性所代表的操作等價(jià)于“Ctrl+方向箭”的操作,使用常量xlUp、xlDown、xlToLeft和xlToRight分別代表上、下、左、右箭。
例如,下面的代碼匯總活動(dòng)單元格下方列的值:


Sub SumBelow()      Dim rng As Range      '匯總活動(dòng)單元格下方單元格的值      With ActiveCell          Set rng = Range(.Offset(1), .Offset(1).End(xlDown))          .Formula = "=SUM(" & _                  rng.Address(RowAbsolute:=False, ColumnAbsolute:=False) & ")"          .Copy Destination:=Range(.Cells(1), .Offset(1).End(xlToRight).Offset(-1))      End With  End Sub

10、Columns屬性和Rows屬性
Columns屬性和Rows屬性分別返回單元格區(qū)域中的所有列和所有行。
11、Areas集合
在多個(gè)非連續(xù)的單元格區(qū)域中使用Columns屬性和Rows屬性時(shí),只是返回第一個(gè)區(qū)域的行或列,如:


Range("A1:B5,C6:D10,E11:F15").Rows.Count

將返回5。
此時(shí)應(yīng)使用Areas集合來(lái)返回區(qū)域中每個(gè)塊的地址,如:


For Each rng In Range("A1:B5,C6:D10,E11:F15").Areas      MsgBox rng.Address  Next rng

12、Union方法和Intersect方法
當(dāng)想從兩個(gè)或多個(gè)單元格區(qū)域中生成一個(gè)單元格區(qū)域時(shí),使用Union方法;當(dāng)找到兩個(gè)或多個(gè)單元格區(qū)域共同擁有的單元格區(qū)域時(shí),使用Intersect方法。
當(dāng)然,操作單元格或單元格區(qū)域有很多有用的技巧,這需要在實(shí)踐中總結(jié)和歸納。接下來(lái)的文章,我們將對(duì)Range對(duì)象的常用屬性和方法進(jìn)行詳解。

在 Excel 中如何使用 Visual Basic 過(guò)程選擇單元格/區(qū)域

對(duì) Office 2003 用戶的重要通知: 若要繼續(xù)接收 Office 安全更新,請(qǐng)確保您運(yùn)行的是 Office 2003 Service Pack 3 (SP3)。對(duì) Office 2003 的支持將于 2014 年 4 月 8 日終止。如果要在支持終止后運(yùn)行 Office 2003,為確保您繼續(xù)收到 Office 的所有重要安全更新,您需要升級(jí)到更新版本,例如 Office 365 或 Office 2013。有關(guān)更多信息,請(qǐng)參閱對(duì) Office 2003 的支持將終止。

本文內(nèi)容

概要

當(dāng)您創(chuàng)建 Microsoft Visual Basic for Applications 宏或過(guò)程時(shí),可以從多種方法中選擇用于選擇單元格、區(qū)域和命名區(qū)域的方法。本文包含一些示例代碼,用以演示其中的某些方法。

本文包括以下示例:
  1. 如何在活動(dòng)工作表上選擇單元格。
  2. 如何在同一工作簿中的另一工作表上選擇單元格。
  3. 如何在另外一個(gè)工作簿中的工作表上選擇單元格。
  4. 如何在活動(dòng)工作表上選擇單元格區(qū)域。
  5. 如何在同一工作簿中另一工作表上選擇單元格區(qū)域。
  6. 如何在另一工作簿中的工作表上選擇單元格區(qū)域。
  7. 如何在活動(dòng)工作表上選擇命名區(qū)域。
  8. 如何在同一工作簿中的另一工作表上選擇命名區(qū)域。
  9. 如何在另一工作簿中的工作表上選擇命名區(qū)域。
  10. 如何相對(duì)于活動(dòng)單元格選擇單元格。
  11. 如何相對(duì)于另一(非活動(dòng))單元格選擇單元格。
  12. 如何相對(duì)于指定區(qū)域選擇單元格區(qū)域偏移。
  13. 如何選擇指定的區(qū)域并調(diào)整所選區(qū)域的大小。
  14. 如何選擇指定的區(qū)域、使之偏移然后調(diào)整其大小。
  15. 如何選擇兩個(gè)或更多指定區(qū)域的聯(lián)合。
  16. 如何選擇兩個(gè)或更多指定區(qū)域的交集。
  17. 如何選擇一列連續(xù)數(shù)據(jù)的最后一個(gè)單元格。
  18. 如何選擇一列連續(xù)數(shù)據(jù)底部的空白單元格。
  19. 如何在一列中選擇整個(gè)相鄰單元格區(qū)域。
  20. 如何在一列中選擇整個(gè)非相鄰單元格區(qū)域。
  21. 如何選擇矩形單元格區(qū)域。
  22. 如何選擇長(zhǎng)度不一的多個(gè)非相鄰列。
注意,這些示例并不一定是執(zhí)行所述操作的最佳或唯一做法。因?yàn)?Visual Basic 具有靈活性,所以執(zhí)行同一操作時(shí)往往有多種不同的方法。

更多信息

Microsoft 提供的編程示例只用于說(shuō)明目的,不附帶任何明示或默示的保證。這包括但不限于對(duì)適銷性或特定用途適用性的默示保證。本文假定您熟悉所演示的編程語(yǔ)言和用于創(chuàng)建和調(diào)試過(guò)程的工具。Microsoft 的支持工程師可以幫助解釋某個(gè)特定過(guò)程的功能,但是他們不會(huì)修改這些示例以提供額外的功能或構(gòu)建過(guò)程以滿足您的特殊需求。 本文中的示例將使用下表中所列的 Visual Basic 方法。
方法                  參數(shù)------------------------------------------Activate           無(wú)Cells              rowIndex, columnIndexApplication.Goto   reference, scrollOffset             rowOffset, columnOffsetRange              cell1cell1, cell2Resize             rowSize, columnSizeSelect             noneSheets             index(或 sheetName)Workbooks          index(或 bookName)End                directionCurrentRegion      無(wú)				
本文中的示例將使用下表中所列的屬性。
屬性                用途---------------------------------------------------------------------ActiveSheet      指定活動(dòng)工作表ActiveWorkbook   指定活動(dòng)工作簿Columns.Count    計(jì)算指定項(xiàng)中的列數(shù)Rows.Count       計(jì)算指定項(xiàng)中的行數(shù)Selection        表示當(dāng)前選中的區(qū)域				

1. 如何在活動(dòng)工作表上選擇單元格

要在活動(dòng)工作表上選擇單元格 D5,可以使用以下任一示例:
ActiveSheet.Cells(5, 4).Select				
- 或者 -
ActiveSheet.Range("D5").Select				

2. 如何在同一工作簿中的另一工作表上選擇單元格

要在同一工作簿中的另一工作表上選擇單元格 E6,可以使用以下任一示例:
Application.Goto ActiveWorkbook.Sheets("Sheet2").Cells(6, 5)				
- 或者 -				
Application.Goto (ActiveWorkbook.Sheets("Sheet2").Range("E6"))				
或者,您也可以激活工作表,然后使用上面的方法 1 來(lái)選擇單元格:
Sheets("Sheet2").ActivateActiveSheet.Cells(6, 5).Select				

3. 如何在另外一個(gè)工作簿中的工作表上選擇單元格

要在另一個(gè)工作簿中的工作表上選擇單元格 F7,可以使用以下任一示例:
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Cells(7, 6)				
- 或者 -
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("F7")				
或者,您也可以激活工作表,然后使用上面的方法 1 來(lái)選擇單元格:
Workbooks("BOOK2.XLS").Sheets("Sheet1").ActivateActiveSheet.Cells(7, 6).Select				

4. 如何在活動(dòng)工作表上選擇單元格區(qū)域

要在活動(dòng)工作表上選擇區(qū)域 C2:D10,可以使用以下任一示例:
ActiveSheet.Range(Cells(2, 3), Cells(10, 4)).Select				
ActiveSheet.Range("C2:D10").Select				
ActiveSheet.Range("C2", "D10").Select				

5. 如何在同一工作簿中另一工作表上選擇單元格區(qū)域

要在同一工作簿中的另一個(gè)工作表上選擇區(qū)域 D3:E11,可以使用以下任一示例:
Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3:E11")				
Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3", "E11")				
或者,您也可以激活工作表,然后使用上面的方法 4 來(lái)選擇范圍:
Sheets("Sheet3").ActivateActiveSheet.Range(Cells(3, 4), Cells(11, 5)).Select				

6. 如何在另一工作簿中的工作表上選擇單元格區(qū)域

要在另一工作簿中的工作表上選擇區(qū)域 E4:F12,可以使用以下任一示例:
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4:F12")				
Application.Goto _      Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4", "F12")				
或者,您也可以激活工作表,然后使用上面的方法 4 來(lái)選擇范圍:
Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate   ActiveSheet.Range(Cells(4, 5), Cells(12, 6)).Select				

7. 如何在活動(dòng)工作表上選擇命名區(qū)域

要在活動(dòng)工作表上選擇命名區(qū)域“Test”,可以使用以下任一示例:
Range("Test").Select				
Application.Goto "Test"				

8. 如何在同一工作簿中另一個(gè)工作表上選擇命名區(qū)域

要在同一工作簿中的另一工作表上選擇命名區(qū)域“Test”,可以使用以下示例:
Application.Goto Sheets("Sheet1").Range("Test")				
或者,您也可以激活工作表,然后使用上面的方法 7 來(lái)選擇命名區(qū)域:
Sheets("Sheet1").ActivateRange("Test").Select				

9. 如何在另一工作簿中的工作表上選擇命名區(qū)域

要在另一工作簿中的工作表上選擇命名區(qū)域“Test”,可以使用以下示例:
Application.Goto _   Workbooks("BOOK2.XLS").Sheets("Sheet2").Range("Test")				
或者,您也可以激活工作表,然后使用上面的方法 7 來(lái)選擇命名區(qū)域:
Workbooks("BOOK2.XLS").Sheets("Sheet2").ActivateRange("Test").Select				

10. 如何相對(duì)于活動(dòng)單元格選擇單元格

要選擇活動(dòng)單元格下面與其相距 5 行、左側(cè)與其相距 4 列的一個(gè)單元格,可以使用以下示例:
ActiveCell.Offset(5, -4).Select				
要選擇活動(dòng)單元格上面與其相距 2 行、右側(cè)與其相距 3 列的一個(gè)單元格,可以使用以下示例:
ActiveCell.Offset(-2, 3).Select				
注意:如果您嘗試選擇“工作表之外”的一個(gè)單元格,將會(huì)出現(xiàn)錯(cuò)誤。在上面的第一個(gè)示例中,如果活動(dòng)單元格在 A 列到 D 列之間,則會(huì)返回一個(gè)錯(cuò)誤,因?yàn)橄蜃笠苿?dòng) 4 列將把活動(dòng)單元格移動(dòng)到一個(gè)無(wú)效的單元格地址。

11. 如何相對(duì)于另一(非活動(dòng))單元格選擇單元格

要選擇單元格 C7 下面與其相距 5 行、右側(cè)與其相距 4 列的一個(gè)單元格,可以使用以下任一示例:
ActiveSheet.Cells(7, 3).Offset(5, 4).Select				
ActiveSheet.Range("C7").Offset(5, 4).Select				

12. 如何相對(duì)于指定區(qū)域選擇單元格區(qū)域偏移

要選擇一個(gè)與命名區(qū)域“Test”大小相同但下移 4 行、右移 3 列的單元格區(qū)域,可以使用以下示例:
ActiveSheet.Range("Test").Offset(4, 3).Select				
如果命名區(qū)域在另一個(gè)(非活動(dòng))工作表上,請(qǐng)首先激活該工作表,接著使用以下示例選擇該區(qū)域:
Sheets("Sheet3").ActivateActiveSheet.Range("Test").Offset(4, 3).Select				

13. 如何選擇指定的區(qū)域并調(diào)整所選區(qū)域的大小

要選擇命名區(qū)域“Database”,然后將所選區(qū)域擴(kuò)展 5 行,可以使用以下示例:
Range("Database").SelectSelection.Resize(Selection.Rows.Count + 5, _   Selection.Columns.Count).Select				

14. 如何選擇指定的區(qū)域、使之偏移然后調(diào)整其大小

要選擇一個(gè)比命名區(qū)域“Database”偏下 4 行、偏右 3 列的區(qū)域并使之比命名區(qū)域多 2 行、1 列,可以使用以下示例:
Range("Database").SelectSelection.Offset(4, 3).Resize(Selection.Rows.Count + 2, _   Selection.Columns.Count + 1).Select				

15. 如何選擇兩個(gè)或更多指定區(qū)域的聯(lián)合

要選擇兩個(gè)命名區(qū)域“Test”和“Sample”的聯(lián)合(即合并區(qū)域),可以使用以下示例:
Application.Union(Range("Test"), Range("Sample")).Select				
注意,這兩個(gè)區(qū)域必須位于同一個(gè)工作表中,此示例才能運(yùn)行。還要注意,Union 方法不可以跨工作表使用。例如,下面這一行可以很好地執(zhí)行
Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet1!C3:D4"))				
但下面這行
Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet2!C3:D4"))				
將返回錯(cuò)誤信息:
Union method of application class failed

16. 如何選擇兩個(gè)或更多指定區(qū)域的交集

要選擇兩個(gè)命名區(qū)域“Test”和“Sample”的交集,可以使用以下示例:
Application.Intersect(Range("Test"), Range("Sample")).Select				
注意,這兩個(gè)區(qū)域必須位于同一個(gè)工作表中,此示例才能運(yùn)行。



本文中的示例 17 至 21 引用了下面這一示例數(shù)據(jù)集。這些示例分別說(shuō)明了將選擇示例數(shù)據(jù)中的哪一單元格區(qū)域。
A1: 名稱          B1: 銷售額     C1: 數(shù)量A2: a		B2: $10       C2: 5A3: b		B3:           C3: 10A4: c		B4: $10       C4: 5A5:             B5:           C5:A6: 合計(jì)          B6: $20       C6: 20				

17. 如何選擇一列連續(xù)數(shù)據(jù)的最后一個(gè)單元格

要選擇一個(gè)連續(xù)列中的最后一個(gè)單元格,請(qǐng)使用以下示例:
ActiveSheet.Range("a1").End(xlDown).Select				
當(dāng)將此代碼用于示例表時(shí),單元格 A4 將被選中。

18. 如何選擇一列連續(xù)數(shù)據(jù)底部的空白單元格

要選擇位于一個(gè)連續(xù)單元格區(qū)域之下的一個(gè)單元格,請(qǐng)使用以下示例:
ActiveSheet.Range("a1").End(xlDown).Offset(1,0).Select				
當(dāng)將此代碼用于示例表時(shí),單元格 A5 將被選中。

19. 如何在一列中選擇整個(gè)相鄰單元格區(qū)域

要在列中選擇一個(gè)連續(xù)單元格區(qū)域,可以使用以下任一示例:
ActiveSheet.Range("a1", ActiveSheet.Range("a1").End(xlDown)).Select				
- 或者 -				
ActiveSheet.Range("a1:" & ActiveSheet.Range("a1"). _      End(xlDown).Address).Select				
當(dāng)將此代碼用于示例表時(shí),單元格 A1 到 A4 將被選中。

20. 如何在一列中選擇整個(gè)非連續(xù)單元格區(qū)域

要選擇一個(gè)非連續(xù)單元格的區(qū)域,可以使用以下任一示例:
ActiveSheet.Range("a1",ActiveSheet.Range("a65536").End(xlUp)).Select				
- 或者 -				
ActiveSheet.Range("a1:" & ActiveSheet.Range("a65536"). _   End(xlUp).Address).Select				
當(dāng)將此代碼用于示例表時(shí),將選擇單元格 A1 到 A6。

21. 如何選擇矩形單元格區(qū)域

為了選擇某一單元格周圍的矩形區(qū)域,請(qǐng)使用 CurrentRegion 方法。由 CurrentRegion 方法選中的區(qū)域是一個(gè)由空白行和空白列的任意組合限定的區(qū)域。下面是一個(gè)如何使用 CurrentRegion 方法的示例:
ActiveSheet.Range("a1").CurrentRegion.Select				
此代碼將選擇單元格 A1 到 C4 之間的區(qū)域。下面列出了選擇此同一單元格區(qū)域的其他示例:
ActiveSheet.Range("a1", _   ActiveSheet.Range("a1").End(xlDown).End(xlToRight)).Select				
- 或者 -				
ActiveSheet.Range("a1:" & _   ActiveSheet.Range("a1").End(xlDown).End(xlToRight).Address).Select				
在某些情況下,您可能需要選擇單元格 A1 到 C6。在本例中,CurrentRegion 方法將不能執(zhí)行,這是因?yàn)榈?5 行是空行。下列示例將選擇所有的單元格:
lastCol = ActiveSheet.Range("a1").End(xlToRight).ColumnlastRow = ActiveSheet.Cells(65536, lastCol).End(xlUp).RowActiveSheet.Range("a1", ActiveSheet.Cells(lastRow, lastCol)).Select				
- 或者 -				
lastCol = ActiveSheet.Range("a1").End(xlToRight).ColumnlastRow = ActiveSheet.Cells(65536, lastCol).End(xlUp).RowActiveSheet.Range("a1:" & _   ActiveSheet.Cells(lastRow, lastCol).Address).Select				

22. 如何選擇長(zhǎng)度不一的多個(gè)非相鄰列

要選擇長(zhǎng)度不一的多個(gè)非相鄰列,請(qǐng)使用下面的示例表和宏示例:
A1: 1  B1: 1  C1: 1  D1: 1A2: 2  B2: 2  C2: 2  D2: 2A3: 3  B3: 3  C3: 3  D3: 3A4:    B4: 4  C4: 4  D4: 4A5:    B5: 5  C5: 5  D5:A6:    B6:    C6: 6  D6:				
StartRange = "A1"EndRange = "C1"Set a = Range(StartRange, Range(StartRange).End(xlDown))Set b = Range(EndRange, Range(EndRange).End(xlDown))Union(a,b).Select				
當(dāng)將此代碼用于示例表時(shí),單元格 A1:A3 和 C1:C6 將被選中。

關(guān)于示例的說(shuō)明

  • 通??梢允÷?ActiveSheet 屬性,因?yàn)槿绻粋€(gè)特定的工作表未命名,實(shí)際上就隱含了此屬性。例如,可以不使用
    ActiveSheet.Range("D5").Select						
    可以使用:
    Range("D5").Select						
  • 通常也可以省略 ActiveWorkbook 屬性。除非命名了一個(gè)具體的工作簿,否則活動(dòng)工作簿是隱含的。
  • 當(dāng)您使用 Application.Goto 方法時(shí),如果您想在指定區(qū)域位于另一(非活動(dòng))工作表上時(shí)在 Range 方法中使用兩個(gè) Cells 方法,則每次都必須包括 Sheets 對(duì)象。例如:
    Application.Goto Sheets("Sheet1").Range( _      Sheets("Sheet1").Range(Sheets("Sheet1").Cells(2, 3), _      Sheets("Sheet1").Cells(4, 5)))					
  • 對(duì)于引號(hào)中的任何項(xiàng)(例如,命名區(qū)域“Test”),您還可以使用一個(gè)值為字符串的變量。例如,可以不使用
    ActiveWorkbook.Sheets("Sheet1").Activate 						
    可以使用
    ActiveWorkbook.Sheets(myVar).Activate						
    其中 myVar 的值是“Sheet1”。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
使用VBA代碼選擇單元格/區(qū)域
用VB操作excel方法匯總
Excel VBA語(yǔ)句集
自學(xué)資料(Excel VBA)[收集整理15]
EXCEL_VBA常用語(yǔ)句
經(jīng)典Excel VBA代碼
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服