在 Microsoft Excel 中,通常要先选定一个或多个单元格,然后执行某一操作,如设置单元格的格式或在单元格中输入数值。 在 Visual Basic 中,在修改单元格之前通常不必将其选定。
例如,若要使用 Visual Basic 在单元格 D6 中输入公式,你无需先选择区域 D6。 只需返回该单元格的“Range”对象,然后将“Formula”属性设置为所需的公式,如下面的示例中所示。
Sub EnterFormula()
Worksheets("Sheet1").Range("D6").Formula = "=SUM(D2:D5)"
End Sub
有关使用其他方法控制单元格而不选择它们的详细信息和示例,请参阅 如何:引用单元格和区域。
使用 Select 方法和 Selection 属性
Select 方法激活工作表和工作表上的对象;而 Selection 属性返回代表活动工作簿中活动工作表上的当前选定区域的对象。 在成功使用 Selection 属性之前,必须先激活工作簿,并激活或选定工作表,然后用 Select 方法选定单元格区域(或其他对象)。
宏录制器通常将创建一个使用 Select 方法和 Selection 属性的宏。 下面的 Sub 过程是用宏录制器创建的,该过程演示了 Select 方法和 Selection 属性如何协同工作。
Sub Macro1()
Sheets("Sheet1").Select
Range("A1").Select
ActiveCell.FormulaR1C1 = "Name"
Range("B1").Select
ActiveCell.FormulaR1C1 = "Address"
Range("A1:B1").Select
Selection.Font.Bold = True
End Sub
以下示例执行同样的任务,但不激活或选择工作表或单元格。
Sub Labels()
With Worksheets("Sheet1")
.Range("A1") = "Name"
.Range("B1") = "Address"
.Range("A1:B1").Font.Bold = True
End With
End Sub
在活动工作表上选择单元格
如果用 Select 方法选定单元格,应注意 Select 方法仅用于活动工作表。 如果从模块中运行 Sub 过程,必须先在该过程中激活工作表,然后才能用 Select 方法选定单元格区域,否则 Select 方法将失败。 例如,下述过程在活动工作簿中将 Sheet1 中的一行复制到 Sheet2 上。
Sub CopyRow()
Worksheets("Sheet1").Rows(1).Copy
Worksheets("Sheet2").Select
Worksheets("Sheet2").Rows(1).Select
Worksheets("Sheet2").Paste
End Sub
激活选择区域内的单元格
用 Activate 方法激活选定区域内的单元格。 即使选定了单元格区域,也只能有一个活动单元格。 下述过程选定了一个单元格区域,然后激活该区域内的一个单元格,但并不改变选定区域。
Sub MakeActive()
Worksheets("Sheet1").Activate
Range("A1:D4").Select
Range("B2").Activate
End Sub
支持和反馈
有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。