使用索引号引用单元格 通过使用行列索引号,可用 Cells 属性引用单个单元格。该属性返回代表单个单元格的 Range 对象。在下例中,Cells(6,1) 返回 Sheet1 上的单元格 A6,然后将 Value 属性设置为 10。 Sub EnterValue() Worksheets("Sheet1").Cells(6, 1).Value = 10 End Sub 因为可用变量替代编号,所以 Cells 属性非常适合于在单元格区域中循环,如下例中所示。 Sub CycleThrough() Dim Counter As Integer For Counter = 1 To 20 Worksheets("Sheet1").Cells(Counter, 3).Value = Counter Next Counter End Sub 如果要同时更改某个区域中所有单元格的属性(或将方法应用于该区域中的所有单元格),建议使用 Range 属性。 使用快捷表示法引用单元格 可用方括号将 A1 引用样式或命名区域括起来,作为 Range 属性的快捷方式。这样就不必键入单词“Range”或使用引号了,如下例中所示。 Sub ClearRange() Worksheets("Sheet1").[A1:B5].ClearContents End Sub Sub SetValue() [MyRange].Value = 30 End Sub 使用 Range 对象引用单元格 如果将对象变量设置为 Range 对象,即可用变量名轻松地操作单元格区域。 以下过程将创建对象变量 myRange,然后将活动工作簿中 Sheet1 上的区域 A1 5 赋予该变量。随后的语句用该变量名称代替 Range 对象,以修改该区域的属性。 Sub Random() Dim myRange As Range Set myRange = Worksheets("Sheet1").Range("A1 5") myRange.Formula = "=RAND()" myRange.Font.Bold = True End Sub 引用命名区域 用名称比用 A1 样式记号更容易标识单元格区域。若要命名选定的单元格区域,请单击编辑栏左端的名称框,键入名称,再按 Enter。 引用命名区域 以下示例引用名为“MyBook.xls”的工作簿中名为“MyRange”的区域。 Sub FormatRange() Range("MyBook.xls!MyRange").Font.Italic = True End Sub 以下示例引用名为“Report.xls”的工作簿中特定于工作表的区域“Sheet1!Sales”。 Sub FormatSales() Range("[Report.xls]Sheet1!Sales").BorderAround Weight:=xlthin End Sub 要选定命名区域,可使用 GoTo 方法,该方法将激活工作簿和工作表,然后选定该区域。 Sub ClearRange() Application.Goto Reference:="MyBook.xls!MyRange" Selection.ClearContents End Sub 以下示例显示对于活动工作簿将如何编写与上例相同的过程。 Sub ClearRange() Application.Goto Reference:="MyRange" Selection.ClearContents End Sub 在命名区域中的单元格上循环 下例用 For Each...Next 循环语句在命名区域中的每一个单元格上循环。如果该区域中的任一单元格的值超过 limit 的值,就将该单元格的颜色更改为黄色。 Sub ApplyColor() Const Limit As Integer = 25 For Each c In Range("MyRange") If c.Value > Limit Then c.Interior.ColorIndex = 27 End If Next c End Sub
引用多个区域 使用适当的方法可以很容易地同时引用多个单元格区域。可用 Range 和 Union 方法引用任意组合的单元格区域;用 Areas 属性可引用工作表上选定的一组单元格区域。 使用 Range 属性 通过在两个或多个引用之间插入逗号,可使用 Range 属性引用多个区域。以下示例清除了 Sheet1 上三个区域的内容。 Sub ClearRanges() Worksheets("Sheet1").Range("C5 9,G9:H16,B14:D18"). _ ClearContents End Sub 命名区域使得用 Range 属性处理多个区域更加容易。以下示例可在所有这三个命名区域处于同一工作表时运行。 Sub ClearNamed() Range("MyRange, YourRange, HisRange").ClearContents End Sub 使用 Union 方法 使用 Union 方法可将多个区域组合到一个 Range 对象中。以下示例创建了名为 myMultipleRange 的 Range 对象,并将其定义为区域 A1:B2 和 C3:D4 的组合,然后将该组合区域的字体设置为加粗。 Sub MultipleRange() Dim r1, r2, myMultipleRange As Range Set r1 = Sheets("Sheet1").Range("A1:B2") Set r2 = Sheets("Sheet1").Range("C3:D4") Set myMultipleRange = Union(r1, r2) myMultipleRange.Font.Bold = True End Sub 使用 Areas 属性 可用 Areas 属性引用选定的单元格区域或多块选定区域中的区域集合。下述过程计算选定区域中的块数目,如果有多个块,就显示一则警告消息。 Sub FindMultiple() If Selection.Areas.Count > 1 Then MsgBox "不能对多个选区进行操作." End If End Sub 处理三维区域 如果要处理若干工作表上相同位置的单元格区域,可用 Array 函数选定两张或多张工作表。下例设置三维单元格区域的边框格式。 Sub FormatSheets() Sheets(Array("Sheet2", "Sheet3", "Sheet5")).Select Range("A1:H1").Select Selection.Borders(xlBottom).LineStyle = xlDouble End Sub 下例应用 FillAcrossSheets 方法,将 Sheet2 上的区域中的格式和所有数据传送到活动工作簿中所有工作表上的相应区域。 Sub FillAll() Worksheets("Sheet2").Range("A1:H1") _ .Borders(xlBottom).LineStyle = xlDouble Worksheets.FillAcrossSheets (Worksheets("Sheet2") _ .Range("A1:H1")) End Sub
|