您的位置:首頁>正文

VBA|使用Range物件01:儲存格區域引用方式

一個Range物件代表一個儲存格、一行、一列或多個儲存格集合(儲存格區域), 甚至可以是多個工作表上的一組儲存格。

在Excel中使用VBA程式設計時, 需要頻繁地引用儲存格區域, 然後再使用相應的屬性和方法對區域進行操作。 正像平時在工作表中需要“先選定, 後操作”一樣。 (儲存格區域可以是單個的儲存格, 也可以是多個儲存格(連續或非連續)組成的區域, 整行或整列等。 )

目錄

1 使用A1樣式引用儲存格

2 在Cells屬性中用索引號引用儲存格

3 用Offset屬性偏移引用儲存格

4 引用表格中的整行或整列

5 用End屬性查找資料區域邊界

6 用CurrentRegion屬性引用當前區域

7 用UsedRange屬性獲取已使用區域

8 用Interset方法獲取重疊區域引用

9 用Union方法獲取合併區域引用

10 用SpecialCells方法獲取指定類型的儲存格

11 用Areas集合引用合併區域的子區域

12 用Item屬性引用區域內的單個儲存格

13 用Resize屬性擴展儲存格區域

1 使用A1樣式引用儲存格

常見的表示方法如下:

Worksheets(1).Range ("A1")

Worksheets(1).Range ("A1:C5")

Worksheets(1).Range ("C5:D9,G9:H16,B14:D18")

Worksheets(1).Range ("MyRange,YourRange,HisRange")

其中MyRange,YourRange,HisRange為儲存格區域的名稱。

也還可以使用以下方式引用儲存格:

[D5]:引用儲存格“D5”;

ActiveCell:目前的儲存格。

2 在Cells屬性中用索引號引用儲存格

常見的表示方法如下:

Worksheets(1).Cells(5,“E”):表示儲存格"E5";

Worksheets(1).Cells(5,5):表示儲存格"E5";

Range(Cells(1,1),Cells(5,3)):表示A1:C5儲存格區域;

Worksheets(1).Cells '第一個工作表的所有儲存格

Sub 儲存格序號()

Dim i As Long, j As Long

For i = 1 To 10

For j = 1 To 5

Cells(i, j).Value = (i - 1) * 5 + j

Next

Next

End Sub

3 用Offset屬性偏移引用儲存格

Range物件的Offset屬性返回一個Range物件, 表示位於指定儲存格區域的一定的偏移量位置上的區域。

常見的表示寫法如下:

Range("C3").Offset(2,2) '表示儲存格E5

Range("D3").Offset(, -1) '表示儲存格C3

4 引用表格中的整行或整列

常見的表示方法如下:

Range("A:C").Select '表示選擇A-C列

Range("1:1").Select '表示選擇第1行

Range("1:3").Select '表示選擇第1-3行

Range("A:A").Select '表示選擇A列

Range("A3").EntireColumn '表示選擇C列

Range("A3").EntireRow '表示選擇第1行

5 用End屬性查找資料區域邊界

在Excel中, 按複合鍵Ctrl+游標鍵可在資料區域中查找到資料區域的邊界。 在VBA中可通過使用Range物件的End屬性來進行相同的操作。

使用Range物件的End屬性將返回一個Range物件, 該物件代表包含源區域的區域尾端的儲存格。 其語法格式如下:

運算式.End(Direction)

5.1 選取B列第一個非空儲存格

If Range("B1") = "" Then

Range("B1").End(xlDown).Selcet

Else

Range("B1").Selcet

End if

5.2 選取B列最後一個非空儲存格

Range("B65536".End(xlUp).Select

5.3 選取11列最左邊非空儲存格

If Range("A11") = "" Then

Range("A11").End(xlToRight).Selcet

Else

Range("A11").Selcet

End if

5.4 選取第17行最右邊非空儲存格

Range("IV17").End(xlToLeft).Select

(end()方法儲存格的選取, 從空到非空, 從非空到空;)

Sub 選擇連續資料區域()

Dim rng1 As Range

Dim i As Long, col As Long

i = Application.InputBox(prompt:="請輸入要選擇資料的行:", Type:=1)

col = Range("A" & i).End(xlToRight).Column

Set rng1 = Range(Cells(i, 1), Cells(i, col))

rng1.Select

Set rng1 = Nothing

End Sub

6 用CurrentRegion屬性引用當前區域

所謂當前區域, 是指以空行與空列的組合為邊界的區域。 常用來表示一個由當前區域展開到空行或空列的區域。

Dim rng1 As Range

Set rng1 = Range("A1")

Set rng1 = rng1.CurrentRegion

7 用UsedRange屬性獲取已使用區域

ActiveSheet.UsedRange.Select

8 用Interset方法獲取重疊區域引用

Sub 重疊區域()

Dim rng1 As Range, rng2 As Range, rng3 As Range

Set rng2 = Range("A1:E10")

Set rng3 = Range("C1:C10")

Set rng1 = Application.Intersect(rng2, rng3)

MsgBox rng1.Address

End Sub

9 用Union方法獲取合併區域引用

Sub 選擇不連續資料區域()

Dim rng1 As Range, rng2 As Range

Set rng1 = Range("A1", Range("A1").End(xlDown))

Set rng2 = Range("E1", Range("E1").End(xlDown))

Union(rng1, rng2).Select

Set rng1 = Nothing

Set rng2 = Nothing

End Sub

10 用SpecialCells方法獲取指定類型的儲存格

Range.SpecialCells 方法可以返回一個 Range 物件, 該物件代表與指定類型和值匹配的所有儲存格。 其語法如下: 運算式.SpecialCells(Type,Value) 。

參數Type為一個常量, 指定要包含的儲存格, 常用的常數如下所述:

XlCellType 常量

說明

xlCellTypeAllFormatConditions

-4172

任意格式儲存格

xlCellTypeAllValidation

-4174

含有驗證條件的儲存格

xlCellTypeBlanks

4

空儲存格

xlCellTypeComments

-4144

含有注釋的儲存格

xlCellTypeConstants

2

含有常量的儲存格

xlCellTypeFormulas

-4123

含有公式的儲存格

xlCellTypeLastCell

11

已用區域中的最後一個儲存格

xlCellTypeSameFormatConditions

-4173

含有相同格式的儲存格

xlCellTypeSameValidation

-4175

含有相同驗證條件的儲存格

xlCellTypeVisible

12

所有可見儲存格

當Type參數為 xlCellTypeConstants 或 xlCellTypeFormulas時, Value參數有4種XlSpecialCellsValue 常量可選, 見下表:

XlSpecialCellsValue 常量

說明

xlErrors

16

錯誤值

xlLogical

4

邏輯值

xlNumbers

1

數位

xlTextValues

2

文本

Sub 不含公式的儲存格()

Dim rng As Range, rng1 As Range, rng2 As Range

Set rng = ActiveSheet.UsedRange '當前使用儲存格區域

rng.SpecialCells(xlCellTypeFormulas).Select '選擇公式儲存格

For Each rng1 In rng

If Application.Intersect(rng1, Selection) Is Nothing Then '儲存格在公式區域

If rng2 Is Nothing Then

Set rng2 = rng1

Else

Set rng2 = Union(rng2, rng1) '合併區域

End If

End If

Next

rng2.Select '選擇區域

End Sub

11 用Areas集合引用合併區域的子區域

Sub 引用子區域()

Dim rng1 As Range

Dim rng2 As Range

Set rng1 = Range("A1:C3, E1:F5, A8:C9")

rng1.Select

For i = 1 To rng1.Areas.Count

Set rng2 = rng1.Areas(i)

str1 = "子區域" & i & vbCr & vbCr

str1 = str1 & "行數:" & rng2.Rows.Count & vbCr

str1 = str1 & "列數:" & rng2.Columns.Count

MsgBox str1

Next

Set rng1 = Nothing

Set rng2 = Nothing

End Sub

12 用Item屬性引用區域內的單個儲存格

要獲取選中區域中的某個儲存格的值, 可以使用Range物件的Item屬性來訪問。 語法格式如下:

運算式.Item(RowIndex,[ColumnIndex])

當後一個參數省略時, 前一參數表示該儲存格區域的第n個儲存格。

Range("A1:E10").Item(4,3) '表示儲存格C4

也可以寫成:

Range("A1:E10").(4,3) '表示儲存格C4

Range("A1:B10").(4) '表示儲存格B2

13 用Resize屬性擴展儲存格區域

使用此屬性, 可以重新調整指定儲存格區域的大小, 並返回一個Range物件。

語法格式如下:

運算式.Resize(RowSize,ColumnSize)

ActiveCells.Offset(3,4).Activate


-End-

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示