VBA中Range("BB1")什么意思

在vba中Range("BB1")表示对活动工作表BB1单元格的引用。

在vba中,Range代表某一单元格、某一行、某一列、某一选定区域(该区域可包含一个或若干连续单元格区域),或者某一三维区域。

Range集合用法

本部分将说明下列返回 Range对象的属性和方法:

Range属性

Cells属性

Range 和 Cells

Offset属性

Union方法

Range属性

可用 Range(arg)(其中 arg 为区域名称)来返回代表单个单元格或单元格区域的 Range对象。下例将单元格 A1 中的值赋给单元格 A5。

Worksheets("Sheet1").Range("A5").Value?=?_

Worksheets("Sheet1").Range("A1").Value

下例设置单元格区域 A1:H8 中每个单元格的公式,用随机数填充该区域。在没有对象识别符(句号左边的对象)的情况下,使用 Range属性将返回活动表上的一个区域。如果活动表不是工作表,则该方法无效。在没有明确的对象识别符的情况下,使用 Range属性之前,可用Activate方法来激活工作表。

Worksheets("Sheet1").Activate

Range("A1:H8").Formula?=?"=Rand()"'Range?is?on?the?active?sheet

下例清除区域 Criteria 中的内容。

Worksheets(1).Range("Criteria").ClearContents

如果用文本参数指定区域地址,必须以 A1 样式记号指定该地址(不能用 R1C1 样式记号)。

Cells属性

可用 Cells(row, column)(其中 row 为行号,column 为列标)返回单个单元格。下例将单元格 A1 赋值为 24。

Worksheets(1).Cells(1,?1).Value?=?24

下例设置单元格 A2 的公式。

ActiveSheet.Cells(2,?1).Formula?=?"=Sum(B1:B5)"

虽然也可用Range("A1")?返回单元格 A1,但有时用 Cells属性更为方便,因为对行或列使用变量。下例在 Sheet1 上创建行号和列标。注意,当工作表激活以后,使用 Cells属性时不必明确声明工作表(它将返回活动工作表上的单元格)。

Sub?SetUpTable()

Worksheets("Sheet1").Activate

For?TheYear?=?1?To?5

Cells(1,?TheYear?+?1).Value?=?1990?+?TheYear

Next?TheYear

For?TheQuarter?=?1?To?4

Cells(TheQuarter?+?1,?1).Value?=?"Q"?&?TheQuarter

Next?TheQuarter

End?Sub

虽然可用 Visual Basic 字符串函数转换 A1 样式引用,但使用Cells(1, 1)?记号更为简便(而且也是更好的编程习惯)。

可用 expression.Cells(row, column) 返回区域中的一部分,其中 expression 是返回 Range对象的表达式,row 和 column 为相对于该区域左上角的偏移量。下例设置单元格 C5 中的公式。

Worksheets(1).Range("C5:C10").Cells(1,?1).Formula?=?"=Rand()"

Range 和 Cells

可用 Range(cell1, cell2) 返回一个 Range对象,其中 cell1 和 cell2 为指定起始和终止位置的 Range对象。下例设置单元格区域 A1:J10 的边框线条的样式。

With?Worksheets(1)

.Range(.Cells(1,?1),?_

.Cells(10,?10)).Borders.LineStyle?=?xlThick

End?With

注意每个 Cells属性之前的句点。如果前导的 With 语句应用于该 Cells属性,那么这些句点就是必需的。本示例中,句点指示单元格处于第一张工作表上。如果没有句点,Cells属性将返回活动工作表上的单元格。

Offset属性

可用 Offset(row, column)(其中 row 和 column 为行偏移量和列偏移量)返回相对于另一区域在指定偏移量处的区域。下例选定位于当前选定区域左上角单元格的向下三行且向右一列处的单元格。由于必须选定位于活动工作表上的单元格,因此必须先激活工作表。

Worksheets("Sheet1").Activate

'Can't?select?unless?the?sheet?is?active

Selection.Offset(3,?1).Range("A1").Select

Union方法

可用 Union(range1, range2, ...) 返回多块区域,即该区域由两个或多个连续的单元格区域所组成。下例创建由单元格区域 A1:B2 和 C3:D4 组合定义的对象,然后选定该定义区域。

Dim?r1?As?Range,?r2?As?Range,?myMultiAreaRange?As?Range

Worksheets("sheet1").Activate

Set?r1?=?Range("A1:B2")

Set?r2?=?Range("C3:D4")

Set?myMultiAreaRange?=?Union(r1,?r2)

myMultiAreaRange.Select

使用包含若干块的选定区域时,Areas属性很有用。它将一个多块选定区域分割为单个的 Range对象,然后将这些对象作为一个集合返回。使用返回的集合的Count属性可检测一个选定区域是否包含多块区域,如下例所示。

Sub?NoMultiAreaSelection()

NumberOfSelectedAreas?=?Selection.Areas.Count

If?NumberOfSelectedAreas?>?1?Then

MsgBox?"You?cannot?carry?out?this?command?"?&?_

"on?multi-area?selections"

End?If

End?Sub