使用 Microsoft Excel 时,通常要先选定单元格或单元格区域,然后执行某一操作,如设置单元格的格式或在单元格中输入数值。但在 Visual Basic 中,通常在修改单元格之前不必先选定它们。
例如,如果要用 Visual Basic 在单元格 D6 中输入公式,就不必先选定单元格 D6,而只需返回 Range 对象,然后将该对象的 Formula 属性设置为所需的公式,如下例所示。
Sub EnterFormula()
Worksheets("Sheet1").Range("D6").Formula = "=SUM(D2:D5)"
End Sub
有关使用其他方法在不选定单元格的情况下对其进行控制的示例,请参阅如何引用单元格和区域。
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 方法选定单元格区域,否则该方法将失败。例如,下述过程在活动工作簿中将 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