ExcelVBA编程教程excel高级教程Word格式.docx
《ExcelVBA编程教程excel高级教程Word格式.docx》由会员分享,可在线阅读,更多相关《ExcelVBA编程教程excel高级教程Word格式.docx(11页珍藏版)》请在冰豆网上搜索。
.=True
EndSub
下表演示了使用
Range属性的一些A1样式引用。
引用
含义
Range("
A1"
)
单元格A1
Range("
B5"
从单元格A1到单元格B5的区域
C5:
D9,G9:
H16"
)多块选定区域
A:
A"
A列
1:
1"
第一行
C"
从A列到C列的区域
5"
从第一行到第五行的区域
Range("
1,3:
3,8:
8"
)第1、3和8行
A,C:
C,F:
F"
)A、C和F列
用编号引用单元格
通过使用行列编号,可用Cells属性来引用单个单元格。
该属性返回代表单个
单元格的Range对象。
下例中,Cells(6,1)返回Sheetl上的单元格A6,然后将Value属性设置为10。
SubEnterValue()
Worksheets("
).Cells(6,1).Value=10
因为可用变量替代编号,所以Cells属性非常适合于在单元格区域中循环,如
下例所示。
SubCycleThrough()
DimCounterAsInteger
ForCounter=1To20
).Cells(Counter,3).Value=Counter
NextCounter
注意如果要同时更改某一单元格区域中所有单元格的属性或对其应用方法,可
使用Range属性。
有关详细信息,请参阅用A1样式记号引用单元格。
引用行和列
可用Rows属性或Columns属性来处理整行或整列。
这两个属性返回代表单元格区域的Range对象。
下例中,用Rows⑴返回Sheet1上的第一行,然后将单元格区域的Font对象的Bold属性设置为True。
SubRowBold()
).Rows
(1).=True
下表举例说明了使用Rows和Columns属性的一些行和列的引用。
若要同时处理若干行或列,请创建一个对象变量并使用Union方法,将对
Rows属性或Columns属性的多个调用组合起来。
下例将活动工作簿中第一张工作表上的第一行、第三行和第五行的字体设置为加粗。
SubSeveralRows()
).Activate
DimmyUnionAsRange
SetmyUnion=Union(Rows
(1),Rows(3),Rows(5))
=True
用快捷记号引用单元格
可用方括号将A1引用样式或命名区域括起来,作为Range属性的快捷方式。
这样就不必键入单词“Range或使用引号,如下例所示。
SubClearRange()
).[A1:
B5].CIearContents
SubSetValue()
[MyRange].Value=30
引用命名区域
用名称比用A1样式记号更容易标识单元格区域。
若要命名选定的单元格区域,请单击编辑栏左端的名称框,键入名称,再按Enter。
下例引用了名为的工作簿中的名为“MyRange的单元格区域。
!
MyRange"
).=True
下例引用名为的工作簿中的特定工作表单元格区域“Sheet1!
Sales。
”
SubFormatSales()
[]Sheet1!
Sales"
).BorderAroundWeight:
=xlthin
若要选定命名区域,请用GoTo方法,该方法将激活工作簿和工作表,然后选定该区域。
Reference:
="
下例显示对于活动工作簿将如何编写相同的过程。
在命名区域中的单元格上循环
下例用ForEach...Next循环语句在命名区域中的每一个单元格上循环。
如果该
区域中的任一单元格的值超过limit的值,就将该单元格的颜色更改为黄色。
SubApplyColor()
ConstLimitAsInteger=25
ForEachcInRange("
If>
LimitThen
=27
EndIf
Nextc
相对于其他单元格来引用单元格
处理相对于另一个单元格的某一单元格的常用方法是使用Offset属性。
下例中,
将位于活动工作表上活动单元格下一行和右边三列的单元格的内容设置为双下划线格式。
SubUnderline()
(1,3).=xlDouble
注意可录制使用Offset属性(而不是绝对引用)的宏。
在工具”菜单上,指向宏”再单击录制新宏”然后单击确定”再单击录制宏工具栏上的相对引用”按钮。
若要在单元格区域中循环,请在循环中将变量与Cells属性一起使用。
下例以5为步长,用5至V100之间的值填充第三列的前20个单元格。
变量counter用作Cells属性的行号。
DimcounterAsInteger
Forcounter=1To20
).Cells(counter,3).Value=counter*5
Nextcounter
用Range对象引用单元格如果将对象变量设置为Range对象,即可用变量名方便地操作单元格区域。
下述过程创建了对象变量myRange,然后将活动工作簿中Sheetl上的单元格区域A1:
D5赋予该变量。
随后的语句用该变量代替该区域对象,以修改该区域的属性。
SubRandom()
DimmyRangeAsRange
SetmyRange=Worksheets("
=RAND()"
引用工作表上的所有单元格
如果对工作表应用Cells属性时不指定编号,该属性将返回代表工作表上所有单元格的Range对象。
下述Sub过程清除活动工作簿中Sheet1上的所有单元格的内容。
SubClearSheet()
).
引用多个单元格区域
使用适当的方法可以很容易地同时引用多个单元格区域。
可用Range和Union
方法引用任意组合的单元格区域;
用Areas属性可引用工作表上选定的一组单元格区域。
使用Range属性
通过在两个或多个引用之间放置逗号,可使用Range属性来引用多个单元格区域。
下例清除了Sheetl上三个单元格区域的内容。
SubClearRanges()
H16,B14:
D18"
)._
ClearContents
命名区域使得用Range属性处理多个单元格区域更为容易。
下例可在三个命名区域处于同一工作表时运行。
SubClearNamed()
MyRange,YourRange,HisRange"
).CIearContents
使用Union方法
用Union方法可将多个单元格区域组合到一个Range对象中。
下例创建了名
为myMultipleRange的Range对象,并将其定义为单元格区域A1:
B2和
C3:
D4的组合,然后将该组合区域的字体设置为加粗。
SubMultipleRange()
Dimr1,r2,myMultipleRangeAsRange
Setr1=Sheets("
B2"
Setr2=Sheets("
D4"
SetmyMultipleRange=Union(r1,r2)
使用Areas属性
可用Areas属性引用选定的单元格区域或多块选定区域中的区域集合。
下述过程计算选定区域中的块数目,如果有多个块,就显示一则警告消息。
SubFindMultiple()
1Then
MsgBox"
Cannotdothistoamultipleselection."
【单元格和区域】二、在单元格区域中循环
在单元格区域中循环
使用VisualBasic时,经常需要对某一单元格区域内的每个单元格运行同一段语句。
为达到这一目的,可组合循环语句和一个或多个方法来标识每个单元格,一次针对一个单元格,并执行该操作。
在单元格区域中循环的一种方法是将For...Next循环语句与Cells属性配合
使用。
使用Cells属性时,可用循环计数器(或其他变量或表达式)来替代单元格索引编号。
下例中,变量counter代替了行号。
此过程将在单元格区域
C1:
C20中循环,将所有绝对值小于的数字都设置为0(零)。
SubRoundToZero1()
SetcurCell=Worksheets("
).Cells(Counter,3)
IfAbs<
Then=0
在单元格区域中循环的另一种简便方法是使用ForEach...Next循环语句和由
Range属性指定的单元格集合。
在每一次循环过程中,VisualBasic都为下一个单元格自动设置一个对象变量。
下述过程在单元格区域A1:
D10中循环,将
所有绝对值小于的数字都设置为0(零)。
SubRoundToZero2()
ForEachcInWorksheet