當前位置:首頁 > 科技 > 正文

Excel VBA引用單元格區域有哪些方法?

我是@EXCEL880實例視頻網站長@歡迎關注我的頭條,每天分享Excel實戰技巧!


私信回複77220可得函數大全(500函數說明+1000函數實例)

單元格的引用方法

在VBA中經常需要引用單元格或單元格區域區域,主要有以下幾種方法。

1.1 使用Range屬性

VBA中可以使用Range屬性返回單元格或單元格區域,如下面的代碼所示。

Sub RngSelect()

Sheet1.Range('A3:F6, B1:C5').Select

End Sub

代碼解析:

RngSelect過程使用Select方法選中A3:F6,B1:C5單元格區域。

Range屬性返回一個Range對象,該對象代表一個單元格或單元格區域,語法如下:

Range(Cell1, Cell2)

參數Cell1是必需的,必須為 A1 樣式引用的宏語言,可包括區域操作符(冒号)、相交區域操作符(空格)或合并區域操作符(逗号)。也可包括美元符号(即絕對地址,如'$A$1')。可在區域中任一部分使用局部定義名稱,如Range('B2:LastCell'),其中LastCell為已定義的單元格區域名稱。

參數Cell2是可選的,區域左上角和右下角的單元格。

運行Sub RngSelect過程,選中A3:F6, B1:C5單元格區域,如圖 11所示。

圖 11使用Range屬性引用單元格區域

注意 如果沒有使用對象識别符,Range屬性返回活動表的一個區域,如果活動表不是工作表,則該屬性無效。

1.2 使用Cells屬性

使用Cells屬性返回一個Range對象,如下面的代碼所示。

Sub Cell()

Dim icell As Integer

For icell = 1 To 100

Sheet2.Cells(icell, 1).Value = icell

Next

End Sub

代碼解析:

Cell過程使用For...Next語句為工作表中的A1:A100單元格區域填入序号。

Cells屬性指定單元格區域中的單元格,語法如下:

Cells(RowIndex, ColumnIndex)

參數RowIndex是可選的,表示引用區域中的行序号。

參數ColumnIndex是可選的,表示引用區域中的列序号。

如果缺省參數,Cells屬性返回引用對象的所有單元格。

Cells屬性的參數可以使用變量,因此經常應用于在單元格區域中循環。

1.3 使用快捷記号

在VBA中可以将A1引用樣式或命名區域名稱使用方括号括起來,作為Range屬性的快捷方式,這樣就不必鍵入單詞'Range'或使用引号,如下面的代碼所示。

Sub Fastmark()

[A1:A5] = 2

[Fast] = 4

End Sub

代碼解析:

Fastmark過程使用快捷記号為單元格區域賦值。

第2行代碼使用快捷記号将活動工作表中的A1:A5單元格賦值為2。

第3行代碼将工作簿中已命名為'Fast'的單元格區域賦值為4。

注意 使用快捷記号引用單元格區域時隻能使用固定字符串而不能使用變量。

1.4 使用Offset屬性

可以使用Range對象的Offset屬性返回一個基于引用的Range對象的單元格區域,如下面的代碼所示。

Sub Offset()

Sheet3.Range('A1:C3').Offset(3, 3).Select

End Sub

代碼解析:

Offset過程使用Range對象的Offset屬性選中A1:A3單元格偏移三行三列後的區域。

應用于Range對象的Offset 屬性的語法如下:

expression.Offset(RowOffset, ColumnOffset)

參數expression是必需的,該表達式返回一個Range對象。

參數RowOffset是可選的,區域偏移的行數(正值、負值或 0(零))。正值表示向下偏移,負值表示向上偏移,默認值為 0。

參數ColumnOffset是可選的,區域偏移的列數(正值、負值或 0(零))。正值表示向右偏移,負值表示向左偏移,默認值為 0。

運行Offset過程,選中A1:A3單元格偏稱三行三列後的區域,如圖 12所示。

圖 12使用Range對象的Offset屬性

1.5 使用Resize屬性

使用Range對象的Resize屬性調整指定區域的大小,并返回調整大小後的單元格區域,如下面的代碼所示。

Sub Resize()

Sheet4.Range('A1').Resize(3, 3).Select

End Sub

代碼解析:

Resize過程使用Range對象的Resize屬性選中A1單元格擴展為三行三列後的區域。

Resize屬性的語法如下:

expression.Resize(RowSize, ColumnSize)

參數expression是必需的,返回要調整大小的Range 對象

參數RowSize是可選的,新區域中的行數。如果省略該參數,則該區域中的行數保持不變。

參數ColumnSize是可選的,新區域中的列數。如果省略該參數。則該區域中的列數保持不變。

運行Resize過程,選中A1單元格擴展為三行三列後的區域,如圖 13所示。

圖 13使用Resize屬性調整區域大小

1.6 使用Union方法

使用Union方法可以将多個非連續區域連接起來成為一個區域,從而可以實現對多個非連續區域一起進行操作,如下面的代碼所示。

Sub UnSelect()

Union(Sheet5.Range('A1:D4'), Sheet5.Range('E5:H8')).Select

End Sub

代碼解析:

UnSelect過程選擇單元格A1:D4和E5:H8所組成的區域。Union方法返回兩個或多個區域的合并區域,語法如下:

expression.Union(Arg1, Arg2, ...)

其中參數expression是可選的,返回一個Application對象。

參數Arg1, Arg2, ...是必需的,至少指定兩個Range對象。

運行UnSelect過程,選中單元格A1:D4和E5:H8所組成的區域,如圖 14所示。

圖 14使用Union方法将多個非連續區域連接成一個區域

1.7 使用UsedRange屬性

使用UsedRange屬性返回指定工作表上已使用單元格組成的區域,如下面的代碼所示。

Sub UseSelect()

Sheet6.UsedRange.Select

End Su

代碼解析:

UseSelect過程使用UsedRange屬性選擇工作表上已使用單元格組成的區域,包括空單元格。如工作表中已使用A1單元格和D8單元格,運行UseSelect過程将選擇A1到D8單元格區域,如圖 15所示。

圖 15使用UsedRange屬性選擇已使用區域

1.8 使用CurrentRegion屬性

使用CurrentRegion屬性返回指定工作表上當前的區域,如下面的代碼所示。

Sub CurrentSelect()

Sheet7.Range('A5').CurrentRegion.Select

End Sub

代碼解析:

CurrentSelect過程使用CurrentRegion屬性選擇工作表上A5單元格當前的區域,當前區域是一個邊緣是任意空行和空列組合成的範圍。

運行CurrentSelect過程将選擇A5到B6單元格區域,如圖 16所示。

圖 16CurrentRegion屬性選擇當前的區域

你可能想看:

有話要說...

取消
掃碼支持 支付碼