EXCEL VBA 单元格的常用操作

2021-01-10 18:15发布

站内文章 / 软件 / 类型:默认类型

1. 单元格的赋值和引用

1.1 引用工作表中的所有单元格

 

Sub ClearSheet()

 Worksheets("Sheet1").Cells.ClearContents

End Sub

 

1.2 使用 A1 表示法引用单元格和区域

可使用 Range 属性引用 A1 引用样式中的单元格或单元格区域。 下述子例程将单元格区域 A1:D5 的字体设置为加粗。

Sub FormatRange()

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

End Sub

 

下表演示了使用 Range 属性的一些 A1 样式引用。

image.png

 

Sub Random()

 Dim myRange As Range

 Set myRange = Worksheets("Sheet1").Range("A1:D5")

 myRange.Formula = "=RAND()"

 myRange.Font.Bold = True

End Sub

1.3 使用索引编号来选择单元格

因为可用变量替代编号,所以 Cells 属性非常适合于在单元格区域中循环,如下例中所示。

Sub CycleThrough()

 Dim Counter As Integer

 For Counter = 1 To 20

 Worksheets("Sheet1").Cells(Counter, 3).Value = Counter

 Next Counter

End Sub

1.4 方括号引用

可以使用方括号中的 A1 引用样式或命名区域作为range属性的快捷方式。 无需键入“Range”一词或使用引号,如以下示例所示。

Sub ClearRange()

 Worksheets("Sheet1").[A1:B5].ClearContents

End Sub

方括号引用一般效率较低,并且方括号内的引用id无法抽象成变量,对循环不友好,所以不推荐,。

1.5 通过移动单元格选择——Offset属性

 

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

Worksheets("sheet1").Activate

  'can't select unless the sheet is active

Selection.Offset(3, 1). Select

Selection可以为单元格或者单元格范围。

 

1.6 多重区域选择——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

 

1.7 引用命名区域

引用名为“Report.xls”的工作簿中特定于工作表的区域“Sheet1!Sales”。

Sub FormatSales()

Range(Range("A2"), Range("A100").End(xlUp)).Name = "Sales"

    Range("[Report.xls]Sheet1!Sales").BorderAround Weight:=xlthin

End Sub

 

 

 

2. 单元格的常用函数

功能

代码


当前单元格的行ID

ActiveCell.Row


当前单元格的列ID

ActiveCell.Column


指定单元格的列地址

Split(Cells(Row, Column).Address,   "$")(1)

Row为单元格的行id

Column为单元格的列id

指定单元格的值

ActiveSheet.Cells(Row, Column).Value

Row为单元格的行id

Column为单元格的列id

指定单元格的地址

(Address带参数的详细用法查询)

ActiveSheet.Cells(Row, Column).Address

Row为单元格的行id

Column为单元格的列id







 

2.1 单元格和数组的数据交换

2.1.1 处理二维数据

 

Worksheets(1).Range("A1").Resize(UBound(MyArray, 1), UBound(MyArray, 2)) = MyArray

 

2.1.2 处理三维数据

如果要处理若干工作表上相同位置的单元格区域,可用 Array 函数选定两张或多张工作表。下例设置三维单元格区域的边框格式。

Sub FormatSheets()

 Sheets(Array("Sheet2", "Sheet3", "Sheet5")).Select

 Range("A1:H1").Select

 Selection.Borders(xlBottom).LineStyle = xlDouble

End Sub


赞赏支持