單元格對(duì)象(Range)大概是VBA代碼中運(yùn)用得最多的對(duì)象了,只要涉及到數(shù)據(jù),最后總是離不開單元格對(duì)象。 Range對(duì)象可以是單個(gè)單元格,一個(gè)矩形的單元格區(qū)域或者是多個(gè)矩形單元格區(qū)域的聯(lián)合。 Range對(duì)象是包含在Worksheet對(duì)象里。 如何引用單元格? 一、工作表上的所有單元格 Worksheets(1).cells 返回指定工作表上代表所有單元格的Range對(duì)象。 二、使用A1表示方法引用單元格和區(qū)域 使用Range屬性引用A1引用樣式中的單元格或單元格區(qū)域 示例: Range('A1') ‘單元格 A1 Range('A1:B5') ‘從單元格 A1 到單元格 B5 的區(qū)域 Range('C5:D9,G9:H16') ‘多塊選定區(qū)域 Range('A:A') ‘A 列 Range('1:1') ‘第一行 Range('A:C') ‘從 A 列到 C 列的區(qū)域 Range('1:5') ‘從第一行到第五行的區(qū)域 Range('1:1,3:3,8:8') ‘第 1、3 和 8 行 Range('A:A,C:C,F:F') ‘A 、C 和 F 列 三、使用Range對(duì)象引用單元格 聲明一個(gè)Range類型的對(duì)象變量,然后賦值引用,直接操作對(duì)象變量即可。 示例: Dim rg As Range Set rg = Worksheets('Sheet1').Range('A1:D8') With rg .Formula = '=RAND()' .Font.Bold = True .Font.Color = vbRed End With 四、使用索引號(hào)引用單元格 通過指定行列索引號(hào),可以用Cells屬性引用單個(gè)單元格。 Dim i As Byte, j As Byte, k As Byte For i = 1 To 56 j = (i - 1) \ 8 + 1 k = i Mod 8 If k = 0 Then k = 8 Cells(k, j * 2 - 1).Interior.ColorIndex = i Cells(k, j * 2).Value = i Next 五、使用快捷表示法引用單元格 可用方括號(hào)將A1引用樣式或命名區(qū)域括起來,作為Range屬性的快捷方式。 示例: Worksheets('Sheet1').[A1:B5].ClearContents [MyRange].Value= 30 六、引用相對(duì)于其他單元格的單元格 以相對(duì)于另一單元格的方法處理某一單元格的常用方法是使用Offset屬性。 某天在論壇答題時(shí)發(fā)現(xiàn)有童鞋在Change事件這樣引用單元格: a = Target.Row b =Target.Column Cells(a, b + 6)= (Cells(a, b) - Cells(a, b - 1)) / (Cells(a, b - 1) * 1.187) 其實(shí)這里直接用Offset就省很多事了,又簡潔。 示例: ActiveCell.Offset(1,3).Font.Underline = xlDouble 七、引用多個(gè)區(qū)域 使用Range屬性和Union方法可以引用任意區(qū)域組合; 使用Areas屬性可引用工作表上一組選定的區(qū)域。 通過在兩個(gè)或多個(gè)引用之間插入逗號(hào),可使用Range屬性引用多個(gè)區(qū)域。 示例: Worksheets('Sheet1').Range('C5:D9,G9:H16,B14:D18').ClearContents Range('MyRange,YourRange, HisRange').ClearContents’命名法 使用Union方法可以將多個(gè)區(qū)域組合到一個(gè)Range對(duì)象當(dāng)中。 示例: Dim r1 As Range, r2 As Range,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 使用 Areas 屬性引用選定的單元格區(qū)域或多塊選定區(qū)域中的區(qū)域集合。 示例: If Selection.Areas.Count > 1 Then MsgBox '選擇了多個(gè)單元格區(qū)域' End If 八、引用命名區(qū)域 用名稱比用 A1 樣式記號(hào)更容易標(biāo)識(shí)單元格區(qū)域。 示例: Range('MyBook.xls!MyRange').Font.Italic= True 引用“MyBook.xls”工作簿中名為“MyRange”的區(qū)域。 Range('[Report.xls]Sheet1!Sales').BorderAroundWeight:=xlthin 引用“Report.xls”工作簿中特定于工作表的區(qū)域“Sheet1!Sales”。 九、引用行和列 可用 Rows 屬性或 Columns 屬性來處理整行或整列。 示例: Rows(1) ‘第一行 Rows ‘工作表上所有的行 Columns(1) ‘第一列 Columns('A') ‘第一列 Columns ‘工作表上所有的列 需要注意的是,不同工作表的單元格和區(qū)域是無法用Range屬性或unon方法組合在一塊。 另外,很多新手在引用單元格(特別是跨簿跨表)時(shí)容易漏掉限定對(duì)象(工作簿,工作表)。
點(diǎn)左下角閱讀原文,可以查看所有煙花VBA系列 |
|