Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 5169|回复: 8

[分享] 【烟花原创】VBA零基础之第57篇 单元格对象Range(一)

[复制链接]
发表于 2013-12-21 21:30 | 显示全部楼层 |阅读模式
  单元格对象(Range)大概是VBA代码中运用得最多的对象了,只要涉及到数据,最后总是离不开单元格对象。
  Range对象可以是单个单元格,一个矩形的单元格区域或者是多个矩形单元格区域的联合。
  Range对象是包含在Worksheet对象里。

  如何引用单元格?
  一、工作表上的所有单元格
  不指定索引号的Cells属性
  Worksheets(1).cells
  返回指定工作表上代表所有单元格的Range对象。

  二、使用A1表示方法引用单元格和区域
  使用Range属性引用A1引用样式中的单元格或单元格区域
  示例:
    Range("A1") ‘单元格 A1
    Range("A1:B5") ‘从单元格 A1 到单元格 B5 的区域
    Range("C5:D9,G9:H16") ‘多块选定区域
    Range("A:A") ‘A
    Range("1:1") ‘第一行
    Range("A:C") ‘ A 列到 C 列的区域
    Range("1:5") ‘从第一行到第五行的区域
    Range("1:1,3:3,8:8") ‘ 13 8
    Range("A:A,C:C,F:F") ‘A C F

  三、使用Range对象引用单元格
  声明一个Range类型的对象变量,然后赋值引用,直接操作对象变量即可。
  示例:
     Dim rg As Range
     Set rg = Worksheets("Sheet1").Range("A1:D8")
     With rg
         .Formula = "=RAND()"
         .Font.Bold = True
         .Font.Color = vbRed
   End With

  四、使用索引号引用单元格
  通过指定行列索引号,可以用Cells属性引用单个单元格。
     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

  五、使用快捷表示法引用单元格
  可用方括号将A1引用样式或命名区域括起来,作为Range属性的快捷方式。
  示例:
    Worksheets("Sheet1").[A1:B5].ClearContents
    [MyRange].Value= 30

  六、引用相对于其他单元格的单元格
  以相对于另一单元格的方法处理某一单元格的常用方法是使用Offset属性。
  某天在论坛答题时发现有童鞋在Change事件这样引用单元格:
    a = Target.Row
    b =Target.Column
    Cells(a, b + 6)= (Cells(a, b) - Cells(a, b - 1)) / (Cells(a, b - 1) * 1.187)
  其实这里直接用Offset就省很多事了,又简洁。
  示例:
    ActiveCell.Offset(1,3).Font.Underline = xlDouble

  七、引用多个区域
  使用Range属性和Union方法可以引用任意区域组合;
  使用Areas属性可引用工作表上一组选定的区域。
  通过在两个或多个引用之间插入逗号,可使用Range属性引用多个区域。
  示例:
    Worksheets("Sheet1").Range("C5:D9,G9:H16,B14:D18").ClearContents
    Range("MyRange,YourRange, HisRange").ClearContents’命名法
  使用Union方法可以将多个区域组合到一个Range对象当中。
  示例:
    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 属性引用选定的单元格区域或多块选定区域中的区域集合。
  示例:
    If Selection.Areas.Count > 1 Then
     MsgBox "选择了多个单元格区域"
    End If

  八、引用命名区域
  用名称比用 A1 样式记号更容易标识单元格区域。
  若要命名选定的单元格区域,请单击编辑栏左端的名称框,键入名称,再按 Enter
  示例:
    Range("MyBook.xls!MyRange").Font.Italic= True
    引用“MyBook.xls”工作簿中名为“MyRange”的区域。
    Range("[Report.xls]Sheet1!Sales").BorderAroundWeight:=xlthin
    引用“Report.xls”工作簿中特定于工作表的区域“Sheet1!Sales”。

  九、引用行和列
  可用 Rows 属性 Columns 属性来处理整行或整列。
  这两个属性返回代表单元格区域的 Range 对象。
  示例:
    Rows(1) ‘第一行
    Rows ‘工作表上所有的行
    Columns(1) ‘第一列
    Columns("A") ‘第一列
    Columns ‘工作表上所有的列

  需要注意的是,不同工作表的单元格和区域是无法用Range属性或unon方法组合在一块。
  另外,很多新手在引用单元格(特别是跨簿跨表)时容易漏掉限定对象(工作簿,工作表)。

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-12-21 21:39 | 显示全部楼层
回复

使用道具 举报

发表于 2013-12-21 23:50 | 显示全部楼层
回复

使用道具 举报

发表于 2013-12-28 10:31 | 显示全部楼层
学习了
回复

使用道具 举报

发表于 2014-4-19 11:23 | 显示全部楼层
学习RANGE(一)
回复

使用道具 举报

发表于 2014-5-17 22:30 | 显示全部楼层
只有这个看懂了
回复

使用道具 举报

发表于 2014-6-18 11:20 | 显示全部楼层
回复

使用道具 举报

发表于 2014-6-18 16:30 | 显示全部楼层
{:1112:}
回复

使用道具 举报

发表于 2014-6-26 07:31 | 显示全部楼层
终于到range了
谢谢分享,标记,五十七
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-2 20:35 , Processed in 0.378904 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表