ExcelVBA教程:如何引用单元格和区域

ExcelVBA教程:如何引用单元格和区域

使用 Visual Basic的普通任务是指定单元格或单元格区域,然后对该单元格或单元格区域进行一些操作,如输入公式或更改格式。通常用一条语句就能完成操作,该语句可标识单元格,还可更改某个属性或应用某个方法。

在 Visual Basic 中,Range对象既可表示单个单元格,也可表示单元格区域。下列主题说明了标识和处理Range对象最常用的方法。

请选择:

用 A1样式记号引用单元格和单元格区域

用编号引用单元格

引用行和列

用快捷记号引用单元格

引用命名单元格区域

相对于其他单元格来引用单元格

用Range对象引用单元格

引用工作表上的所有单元格

引用多个单元格区域

ExcelVBA教程:用 A1样式记号引用单元格和单元格区域

可使用 Range属性来引用 A1 引用样式中的单元格或单元格区域。下述子程序将单元格区域 A1:D5的字体设置为加粗。

Sub FormatRange()

Workbooks("Book1").Sheets("Sheet1").Range("A1:D5")_

.Font.Bold = True

End Sub

下表演示了使用 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")

第1、3 和 8 行

Range("A:A,C:C,F:F")

A、C 和 F 列

Excel VBA教程:用编号引用单元格

通过使用行列编号,可用Cells属性来引用单个单元格。该属性返回代表单个单元格的Range对象。下例中,Cells(6,1) 返回 Sheet1 上的单元格 A6,然后将 Value属性设置为10。

SubEnterValue()

Worksheets("Sheet1").Cells(6, 1).Value = 10

EndSub

因为可用变量替代编号,所以Cells属性非常适合于在单元格区域中循环,如下例所示。

ExcelVBA教程:如何引用单元格和区域

SubCycleThrough()

Dim Counter As Integer

For Counter = 1 To 20

Worksheets("Sheet1").Cells(Counter, 3).Value = Counter

Next Counter

EndSub

注意如果要同时更改某一单元格区域中所有单元格的属性或对其应用方法,可使用Range属性。有关详细信息,请参阅用 A1 样式记号引用单元格。

Excel VBA教程:引用行和列

可用Rows属性或Columns属性来处理整行或整列。这两个属性返回代表单元格区域的Range对象。下例中,用Rows(1) 返回 Sheet1 上的第一行,然后将单元格区域的 Font对象的 Bold属性设置为True。

SubRowBold()

Worksheets("Sheet1").Rows(1).Font.Bold = True

EndSub

下表举例说明了使用 Rows 和Columns属性的一些行和列的引用。

引用

含义

Rows(1)

第一行

Rows

工作表上所有的行

Columns(1)

第一列

Columns("A")

第一列

Columns

工作表上所有的列

若要同时处理若干行或列,请创建一个对象变量并使用 Union方法,将对 Rows属性或Columns属性的多个调用组合起来。下例将活动工作簿中第一张工作表上的第一行、第三行和第五行的字体设置为加粗。

SubSeveralRows()

Worksheets("Sheet1").Activate

Dim myUnion As Range

Set myUnion = Union(Rows(1), Rows(3), Rows(5))

myUnion.Font.Bold = True

EndSub

Excel VBA教程:用快捷记号引用单元格

可用方括号将 A1引用样式或命名区域括起来,作为Range属性的快捷方式。这样就不必键入单词“Range”或使用引号,如下例所示。

SubClearRange()

Worksheets("Sheet1").[A1:B5].ClearContents

EndSub

SubSetValue()

[MyRange].Value = 30

EndSub

ExcelVBA教程:引用命名区域

用名称比用 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

在命名区域中的单元格上循环

下例用 ForEach...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

Excel VBA教程:相对于其他单元格来引用单元格

处理相对于另一个单元格的某一单元格的常用方法是使用Offset属性。下例中,将位于活动工作表上活动单元格下一行和右边三列的单元格的内容设置为双下划线格式。

SubUnderline()

ActiveCell.Offset(1, 3).Font.Underline = xlDouble

EndSub

注意 可录制使用Offset属性(而不是绝对引用)的宏。在“工具”菜单上,指向“宏”,再单击“录制新宏”,然后单击“确定”,再单击录制宏工具栏上的“相对引用”按钮。

若要在单元格区域中循环,请在循环中将变量与 Cells属性一起使用。下例以 5 为步长,用 5 到 100之间的值填充第三列的前 20 个单元格。变量counter 用作 Cells属性的行号。

SubCycleThrough()

Dim counter As Integer

For counter = 1 To 20

Worksheets("Sheet1").Cells(counter, 3).Value = counter *5

Next counter

EndSub

Excel VBA教程:用Range对象引用单元格

如果将对象变量设置为Range对象,即可用变量名方便地操作单元格区域。

下述过程创建了对象变量myRange,然后将活动工作簿中 Sheet1 上的单元格区域 A1:D5赋予该变量。随后的语句用该变量代替该区域对象,以修改该区域的属性。

SubRandom()

Dim myRange As Range

Set myRange = Worksheets("Sheet1").Range("A1:D5")

myRange.Formula = "=RAND()"

myRange.Font.Bold = True

EndSub

Excel VBA教程:引用工作表上的所有单元格

如果对工作表应用Cells属性时不指定编号,该属性将返回代表工作表上所有单元格的 Range对象。下述 Sub 过程清除活动工作簿中 Sheet1上的所有单元格的内容。

SubClearSheet()

Worksheets("Sheet1").Cells.ClearContents

EndSub

ExcelVBA教程:引用多个单元格区域

使用适当的方法可以很容易地同时引用多个单元格区域。可用 Range 和 Union方法引用任意组合的单元格区域;用Areas属性可引用工作表上选定的一组单元格区域。

使用Range属性

通过在两个或多个引用之间放置逗号,可使用 Range属性来引用多个单元格区域。下例清除了 Sheet1上三个单元格区域的内容。

Sub ClearRanges()
 Worksheets("Sheet1").Range("C5:D9,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 "Cannot do this to a multiple selection."
 End If
End Sub

  

爱华网本文地址 » http://www.413yy.cn/a/25101012/133415.html

更多阅读

EXCEL如何锁定单元格锁定的单元格不能修改 锁定excel部分单元格

EXCEL如何锁定单元格(锁定的单元格不能修改)——简介有的表格设定好后,需要发给其他部门进行填写,但有的人喜欢按自己的习惯进行更改,造成项目无法统计和识别,如何锁定这些单元格呢,听我说一说(WPS操作相同)EXCEL如何锁定单元格(锁定的单元格

Excel如何实现单元格内轻松换行? excel单元格内换行符

Excel如何实现单元格内轻松换行?——简介Excel又一个功能如何实现在单元格内换行,纯粹的顶格换行可能大家都会,但是不规则换行如何实现呢?Excel如何实现单元格内轻松换行?——工具/原料Excel2010Excel如何实现单元格内轻松换行?——方法

怎么样在Excel单元格中输入上下标? excel中如何输入下标

在Excel表格文字录入时,有时需要在Excel单元格中输入如平方米m2(2为上标),CO2(2为下标)等符号2,Excel可以方便地实现。怎么样在Excel单元格中输入上下标?——步骤/方法怎么样在Excel单元格中输入上下标? 1、步骤一:在Excel单元格中选择要设置

Excel中如何拆分单元格 excel怎么在单元格拆分

Excel中如何拆分单元格——简介在日常工作中我们经常都要用到Excel,经常都会遇到各种各样的问题,例如有时候就把一个格拆分成两个来使用,那么你会Excel表格中的拆分功能吗?小编就和大家一起学习一下如何使用Excel表中的拆分功能。

转载 如何设计博客和发表文章 怎么在博客上发表文章

原文地址:如何设计博客和发表文章作者:gaosanyi            如何设计博客和发表文章如何设置风格 新版博客将给大家提供8大类共计200多套风格模板,而且模板还在陆续添加当中。您也可以自定义更炫的模板。  更换模板

声明:《ExcelVBA教程:如何引用单元格和区域》为网友半玍寒風分享!如侵犯到您的合法权益请联系我们删除