九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

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

開通VIP
使用VBA代碼選擇單元格/區(qū)域
使用VBA代碼選擇單元格/區(qū)域
fanjy 發(fā)表于 2007-2-11 16:06:00
使用VBA的常見任務(wù)是指定單元格或單元格區(qū)域,然后對該單元格或單元格區(qū)域進(jìn)行一些操作,如輸入公式或更改格式。通常用一條語句就能完成操作,該語句可標(biāo)識單元格,還可更改某個屬性或應(yīng)用某個方法。本文是《在VBA代碼中引用Excel工作表中單元格區(qū)域的方式小結(jié)》一文的補(bǔ)充,參考了msdn文檔庫和Excel 2007 VBA幫助系統(tǒng)。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
目錄
    如何選擇當(dāng)前工作表中的單元格?
    如何選擇同一工作簿中其它工作表上的單元格?
    如何選擇不同工作簿中的單元格?
    如何選擇當(dāng)前工作表中的單元格區(qū)域?
    如何選擇同一工作簿中另一工作表上的單元格區(qū)域?
    如何選擇不同工作簿中工作表上的單元格區(qū)域?
    如何在當(dāng)前工作表中選擇命名區(qū)域?
    如何選擇同一工作簿中另一工作表上的命名區(qū)域?
    如何選擇不同工作簿中工作表上的命名區(qū)域?
    如何選擇與當(dāng)前單元格相關(guān)的單元格?
    如何選擇與另一單元格(不是當(dāng)前單元格)相關(guān)的單元格?
    如何選擇偏離指定區(qū)域的一個單元格區(qū)域?
    如何選擇一個指定的區(qū)域并擴(kuò)展區(qū)域的大???
    如何選擇一個指定的區(qū)域,再偏離,然后擴(kuò)展區(qū)域的大小?
    如何選擇兩個或多個指定區(qū)域?
    如何選擇兩個或多個指定區(qū)域的交叉區(qū)域?
    如何選擇連續(xù)數(shù)據(jù)列中的最后一個單元格?
    如何選擇連續(xù)數(shù)據(jù)列底部的空單元格?
    如何選擇某列中連續(xù)數(shù)據(jù)單元格區(qū)域?
    如何選擇某列中非連續(xù)數(shù)據(jù)單元格區(qū)域?
    如何選擇一個矩形(規(guī)則的)單元格區(qū)域?
    如何選擇多個不同長度的非連續(xù)列?
    引用工作表上的所有單元格
    使用 A1 表示法引用單元格和區(qū)域
    引用行和列
    使用索引號引用單元格
    使用快捷表示法引用單元格
    使用 Range 對象引用單元格
    引用命名區(qū)域
    引用多個區(qū)域
    處理三維區(qū)域
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
如何選擇當(dāng)前工作表中的單元格?
例如,可以使用下面的代碼選擇當(dāng)前工作表中的單元格D5:
ActiveSheet.Cells(5, 4).Select
或:ActiveSheet.Range("D5").Select
如何選擇同一工作簿中其它工作表上的單元格?
例如,要選擇同一工作簿中另一工作表上的單元格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
如何選擇當(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
如何選擇同一工作簿中另一工作表上的單元格區(qū)域?
例如,要選擇同一工作簿中另一工作表上的單元格區(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ū)域?
例如,要選擇另一工作簿中某工作表上的單元格區(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
如何在當(dāng)前工作表中選擇命名區(qū)域?
例如,要選擇當(dāng)前工作表中名為“Test”的區(qū)域,可以使用下面的代碼:
Range("Test").Select
或:Application.Goto "Test"
如何選擇同一工作簿中另一工作表上的命名區(qū)域?
例如,選擇同一工作簿中另一工作表上名為“Test”的區(qū)域,可使用下面的代碼:
Application.Goto Sheets("Sheet1").Range("Test")
也可以先激活工作表,再選擇:
Sheets("Sheet1").Activate
Range("Test").Select
如何選擇不同工作簿中工作表上的命名區(qū)域?
例如,要選擇不同工作簿中工作表上名為“Test”的區(qū)域,可使用下面的代碼:
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet2").Range("Test")
也可以先激活工作表,再選擇:
Workbooks("BOOK2.XLS").Sheets("Sheet2").Activate
Range("Test").Select
如何選擇與當(dāng)前單元格相關(guān)的單元格?
例如,要選擇距當(dāng)前單元格下面5行左側(cè)4列的單元格,可以使用下面的代碼:
ActiveCell.Offset(5, -4).Select
要選擇距當(dāng)前單元格上方2行右側(cè)3列的單元格,可以使用下面的代碼:
ActiveCell.Offset(-2, 3).Select
注意:一定要保證當(dāng)前單元格與所選單元格之間的距離在工作表范圍內(nèi),否則會出錯。
如何選擇與另一單元格(不是當(dāng)前單元格)相關(guān)的單元格?
例如,要選擇距單元格C7下方5行右側(cè)4列的單元格,可以使用下面的代碼:
ActiveSheet.Cells(7, 3).Offset(5, 4).Select
或:ActiveSheet.Range("C7").Offset(5, 4).Select
如何選擇偏離指定區(qū)域的一個單元格區(qū)域?
例如,要選擇與名為“Test”的區(qū)域大小相同但在該區(qū)域下方4行右側(cè)3列的一個區(qū)域,可以使用下面的代碼:
ActiveSheet.Range("Test").Offset(4, 3).Select
如果該命名區(qū)域不在當(dāng)前工作表中,可以先激活該工作表,然后再選擇,如下面的代碼:
Sheets("Sheet3").Activate
ActiveSheet.Range("Test").Offset(4, 3).Select
如何選擇一個指定的區(qū)域并擴(kuò)展區(qū)域的大小?
例如,要選擇當(dāng)前工作表中名為“Database”區(qū)域,然后將該區(qū)域向下擴(kuò)展5行,可以使用下面的代碼:
Range("Database").Select
Selection.Resize(Selection.Rows.Count + 5, Selection.Columns.Count).Select
如何選擇一個指定的區(qū)域,再偏離,然后擴(kuò)展區(qū)域的大???
例如,選擇名為“Database”區(qū)域下方4行右側(cè)3列的一個區(qū)域,然后擴(kuò)展2行和1列,可以使用下面的代碼:
Range("Database").Select
Selection.Offset(4, 3).Resize(Selection.Rows.Count + 2, Selection.Columns.Count + 1).Select
如何選擇兩個或多個指定區(qū)域?
例如,為了同時選擇名為“Test”和“Sample”的兩個區(qū)域,可以使用下面的代碼:
Application.Union(Range("Test"), Range("Sample")).Select
注意,這兩個區(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"))
將會出錯。
如何選擇兩個或多個指定區(qū)域的交叉區(qū)域?
例如,要選擇名為“Test”和“Sample”的兩個區(qū)域的交叉區(qū)域,可以使用下面的代碼:
Application.Intersect(Range("Test"), Range("Sample")).Select
注意,兩個區(qū)域必須在同一工作表中。
= = = = = = = = = = = = = = = = = = = = = = = = =
下面的示例使用了如下圖所示的工作表。
 
如何選擇連續(xù)數(shù)據(jù)列中的最后一個單元格?
例如,要選擇一個連續(xù)列中的最后一個單元格,可以使用下面的代碼:
ActiveSheet.Range("a1").End(xlDown).Select
該代碼使用在上面的工作表中,單元格A4被選擇。
如何選擇連續(xù)數(shù)據(jù)列底部的空單元格?
例如,要選擇連續(xù)單元格區(qū)域下面的單元格,可以使用下面的代碼:
ActiveSheet.Range("a1").End(xlDown).Offset(1, 0).Select
該代碼使用在上面的工作表中,單元格A5被選擇。
如何選擇某列中連續(xù)數(shù)據(jù)單元格區(qū)域?
例如,要選擇一列中的連續(xù)數(shù)據(jù)單元格區(qū)域,可以使用下面的代碼:
ActiveSheet.Range("a1", ActiveSheet.Range("a1").End(xlDown)).Select
或:ActiveSheet.Range("a1:" & ActiveSheet.Range("a1").End(xlDown).Address).Select
該代碼使用在上面的工作表中,單元格區(qū)域A1:A4將被選擇。
如何選擇某列中非連續(xù)數(shù)據(jù)單元格區(qū)域?
例如,要選擇某列中非連續(xù)數(shù)據(jù)單元格區(qū)域,可以使用下面的代碼:
ActiveSheet.Range("a1", ActiveSheet.Range("a65536").End(xlUp)).Select
或:ActiveSheet.Range("a1:" & ActiveSheet.Range("a65536").End(xlUp).Address).Select
該代碼使用在上面的工作表中,單元格區(qū)域A1:A6將被選擇。
如何選擇一個矩形(規(guī)則的)單元格區(qū)域?
要選擇圍繞某單元格的一個矩形區(qū)域,可以使用CurrentRegion方法。CurrentRegion方法將選擇四周被空行和空列圍繞的區(qū)域,如下面的代碼:
ActiveSheet.Range("a1").CurrentRegion.Select
該代碼使用在上面的工作表中,將選擇單元格區(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
= = = = = = = = = = = = = = = = = = = =
如何選擇多個不同長度的非連續(xù)列?
例如,有下圖所示的工作表:

要同時選擇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
= = = = = = = = = = = = = = = = = = = =
注:使用Application.Goto方法,如果指定另一工作表(不是當(dāng)前工作表)中的指定區(qū)域,在Range屬性中使用兩個Cells屬性時,則必須包括Sheets對象,如:
Application.Goto Sheets("Sheet1").Range(Sheets("Sheet1").Range(Sheets("Sheet1").Cells(2, 3), Sheets("Sheet1").Cells(4, 5)))
= = = = = = = = = = = = = = = = = = = =
在VBA中,Range 對象既可表示單個單元格,也可表示單元格區(qū)域。下面的內(nèi)容說明了標(biāo)識和處理Range對象最常用的方法。
引用工作表上的所有單元格
如果對工作表應(yīng)用 Cells 屬性時不指定索引號,該方法將返回代表工作表上所有單元格的 Range 對象。以下 Sub 過程清除活動工作簿中 Sheet1 上的所有單元格的內(nèi)容。
Sub ClearSheet()
    Worksheets("Sheet1").Cells.ClearContents
End Sub
使用 A1 表示法引用單元格和區(qū)域
可使用 Range 屬性引用 A1 引用樣式中的單元格或單元格區(qū)域。下述子例程將單元格區(qū)域 A1:D5 的字體設(shè)置為加粗。
Sub FormatRange()
    Workbooks("Book1").Sheets("Sheet1").Range("A1:D5") _
        .Font.Bold = True
End Sub
下表演示了使用 Range 屬性的一些 A1 樣式引用。
引用                       含義
Range("A1")        單元格 A1
Range("A1:B5")       從單元格 A1 到單元格 B5 的區(qū)域
Range("C5:D9,G9:H16")     多塊選定區(qū)域
Range("A:A")        A 列
Range("1:1")        第一行
Range("A:C")        從 A 列到 C 列的區(qū)域
Range("1:5")        從第一行到第五行的區(qū)域
Range("1:1,3:3,8:8")     第 1、3 和 8 行
Range("A:A,C:C,F:F")     A 、C 和 F 列
引用行和列
可用 Rows 屬性或 Columns 屬性來處理整行或整列。這兩個屬性返回代表單元格區(qū)域的 Range 對象。在下例中,Rows(1) 返回 Sheet1 上的第一行,然后將區(qū)域字體加粗。
Sub RowBold()
    Worksheets("Sheet1").Rows(1).Font.Bold = True
End Sub
下表舉例說明了使用 Rows 和 Columns 屬性的一些行和列的引用。
引用               含義
Rows(1)    第一行
Rows     工作表上所有的行
Columns(1)   第一列
Columns("A")   第一列
Columns    工作表上所有的列
若要同時處理若干行或列,可創(chuàng)建一個對象變量并使用 Union 方法,將對 Rows 屬性或 Columns 屬性的多個調(diào)用組合起來。下例將活動工作簿中第一張工作表上的第一行、第三行和第五行的字體設(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
使用索引號引用單元格
通過使用行列索引號,可用 Cells 屬性引用單個單元格。該屬性返回代表單個單元格的 Range 對象。在下例中,Cells(6,1) 返回 Sheet1 上的單元格 A6,然后將 Value 屬性設(shè)置為 10。
Sub EnterValue()
    Worksheets("Sheet1").Cells(6, 1).Value = 10
End Sub
因?yàn)榭捎米兞刻娲幪?,所?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
如果要同時更改某個區(qū)域中所有單元格的屬性(或?qū)⒎椒☉?yīng)用于該區(qū)域中的所有單元格),建議使用 Range 屬性。
使用快捷表示法引用單元格
可用方括號將 A1 引用樣式或命名區(qū)域括起來,作為 Range 屬性的快捷方式。這樣就不必鍵入單詞“Range”或使用引號了,如下例中所示。
Sub ClearRange()
    Worksheets("Sheet1").[A1:B5].ClearContents
End Sub
Sub SetValue()
    [MyRange].Value = 30
End Sub
使用 Range 對象引用單元格
如果將對象變量設(shè)置為 Range 對象,即可用變量名輕松地操作單元格區(qū)域。
以下過程將創(chuàng)建對象變量 myRange,然后將活動工作簿中 Sheet1 上的區(qū)域 A1:D5 賦予該變量。隨后的語句用該變量名稱代替 Range 對象,以修改該區(qū)域的屬性。
Sub Random()
    Dim myRange As Range
    Set myRange = Worksheets("Sheet1").Range("A1:D5")
    myRange.Formula = "=RAND()"
    myRange.Font.Bold = True
End Sub
引用命名區(qū)域
用名稱比用 A1 樣式記號更容易標(biāo)識單元格區(qū)域。若要命名選定的單元格區(qū)域,請單擊編輯欄左端的名稱框,鍵入名稱,再按 Enter。
引用命名區(qū)域
以下示例引用名為“MyBook.xls”的工作簿中名為“MyRange”的區(qū)域。
Sub FormatRange()
    Range("MyBook.xls!MyRange").Font.Italic = True
End Sub
以下示例引用名為“Report.xls”的工作簿中特定于工作表的區(qū)域“Sheet1!Sales”。
Sub FormatSales()
    Range("[Report.xls]Sheet1!Sales").BorderAround Weight:=xlthin
End Sub
要選定命名區(qū)域,可使用 GoTo 方法,該方法將激活工作簿和工作表,然后選定該區(qū)域。
Sub ClearRange()
    Application.Goto Reference:="MyBook.xls!MyRange"
    Selection.ClearContents
End Sub
以下示例顯示對于活動工作簿將如何編寫與上例相同的過程。
Sub ClearRange()
    Application.Goto Reference:="MyRange"
    Selection.ClearContents
End Sub
在命名區(qū)域中的單元格上循環(huán)
下例用 For Each...Next 循環(huán)語句在命名區(qū)域中的每一個單元格上循環(huán)。如果該區(qū)域中的任一單元格的值超過 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
引用多個區(qū)域
使用適當(dāng)?shù)姆椒梢院苋菀椎赝瑫r引用多個單元格區(qū)域。可用 Range 和 Union 方法引用任意組合的單元格區(qū)域;用 Areas 屬性可引用工作表上選定的一組單元格區(qū)域。
使用 Range 屬性
通過在兩個或多個引用之間插入逗號,可使用 Range 屬性引用多個區(qū)域。以下示例清除了 Sheet1 上三個區(qū)域的內(nèi)容。
Sub ClearRanges()
    Worksheets("Sheet1").Range("C5:D9,G9:H16,B14:D18"). _
        ClearContents
End Sub
命名區(qū)域使得用 Range 屬性處理多個區(qū)域更加容易。以下示例可在所有這三個命名區(qū)域處于同一工作表時運(yùn)行。
Sub ClearNamed()
    Range("MyRange, YourRange, HisRange").ClearContents
End Sub
使用 Union 方法
使用 Union 方法可將多個區(qū)域組合到一個 Range 對象中。以下示例創(chuàng)建了名為 myMultipleRange 的 Range 對象,并將其定義為區(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
使用 Areas 屬性
可用 Areas 屬性引用選定的單元格區(qū)域或多塊選定區(qū)域中的區(qū)域集合。下述過程計算選定區(qū)域中的塊數(shù)目,如果有多個塊,就顯示一則警告消息。
Sub FindMultiple()
    If Selection.Areas.Count > 1 Then
        MsgBox "不能對多個選區(qū)進(jìn)行操作."
    End If
End Sub
處理三維區(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ù)傳送到活動工作簿中所有工作表上的相應(yīng)區(qū)域。
Sub FillAll()
    Worksheets("Sheet2").Range("A1:H1") _
        .Borders(xlBottom).LineStyle = xlDouble
    Worksheets.FillAcrossSheets (Worksheets("Sheet2") _
        .Range("A1:H1"))
End Sub
分類:ExcelVBA>>ExcelVBA對象模型編程>>常用對象>>Range對象
by fanjy in 2007-2-10
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
用VB操作excel方法匯總
Excel VBA語句集
EXCEL_VBA常用語句
VBA在Excel中的應(yīng)用(一)
Range對象應(yīng)用大全(1)
Excel中VBA 代碼段匯集,附中文解說
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服