Excel VBA Range对象基本操作应用示例.docx
《Excel VBA Range对象基本操作应用示例.docx》由会员分享,可在线阅读,更多相关《Excel VBA Range对象基本操作应用示例.docx(18页珍藏版)》请在冰豆网上搜索。
ExcelVBARange对象基本操作应用示例
ExcelVBARange对象基本操作应用示例
2011-03-0211:
41:
43| 分类:
Excel技巧| 标签:
|举报|字号大中小 订阅
[示例01]赋值给某单元格
[示例01-01]
Subtest1()
Worksheets("Sheet1").Range("A5").Value=22
MsgBox"工作表Sheet1内单元格A5中的值为"_
&Worksheets("Sheet1").Range("A5").Value
EndSub
[示例01-02]
Subtest2()
Worksheets("Sheet1").Range("A1").Value=_
Worksheets("Sheet1").Range("A5").Value
MsgBox"现在A1单元格中的值也为"&_
Worksheets("Sheet1").Range("A5").Value
EndSub
[示例01-03]
Subtest3()
MsgBox"用公式填充单元格,本例为随机数公式"
Range("A1:
H8").Formula="=Rand()"
EndSub
[示例01-04]
Subtest4()
Worksheets
(1).Cells(1,1).Value=24
MsgBox"现在单元格A1的值为24"
EndSub
[示例01-05]
Subtest5()
MsgBox"给单元格设置公式,求B2至B5单元格区域之和"
ActiveSheet.Cells(2,1).Formula="=Sum(B1:
B5)"
EndSub
[示例01-06]
Subtest6()
MsgBox"设置单元格C5中的公式."
Worksheets
(1).Range("C5:
C10").Cells(1,1).Formula="=Rand()"
EndSub
--------------------------------------
[示例02]引用单元格
SubRandom()
DimmyRangeAsRange
'设置对单元格区域的引用
SetmyRange=Worksheets("Sheet1").Range("A1:
D5")
'对Range对象进行操作
myRange.Formula="=RAND()"
myRange.Font.Bold=True
EndSub
示例说明:
可以设置Range对象变量来引用单元格区域,然后对该变量所代表的单元格区域进行操作。
--------------------------------------
[示例03]清除单元格
[示例03-01]清除单元格中的内容(ClearContents方法)
SubtestClearContents()
MsgBox"清除指定单元格区域中的内容"
Worksheets
(1).Range("A1:
H8").ClearContents
EndSub
[示例03-02]清除单元格中的格式(ClearFormats方法)
SubtestClearFormats()
MsgBox"清除指定单元格区域中的格式"
Worksheets
(1).Range("A1:
H8").ClearFormats
EndSub
[示例03-03]清除单元格中的批注(ClearComments方法)
SubtestClearComments()
MsgBox"清除指定单元格区域中的批注"
Worksheets
(1).Range("A1:
H8").ClearComments
EndSub
[示例03-04]清除单元格中的全部,包括内容、格式和批注(Clear方法)
SubtestClear()
MsgBox"彻底清除指定单元格区域"
Worksheets
(1).Range("A1:
H8").Clear
EndSub
--------------------------------------
[示例04]Range和Cells
Subtest()
'设置单元格区域A1:
J10的边框线条样式
WithWorksheets
(1)
.Range(.Cells(1,1),_
.Cells(10,10)).Borders.LineStyle=xlThick
EndWith
EndSub
示例说明:
可用Range(cell1,cell2)返回一个Range对象,其中cell1和cell2为指定起始和终止位置的Range对象。
--------------------------------------
[示例05]选取单元格区域(Select方法)
SubtestSelect()
'选取单元格区域A1:
D5
Worksheets("Sheet1").Range("A1:
D5").Select
EndSub
--------------------------------------
[示例06]基于所选区域偏离至另一区域(Offset属性)
[示例06-01]
SubtestOffset()
Worksheets("Sheet1").Activate
Selection.Offset(3,1).Select
EndSub
示例说明:
可用Offset(row,column)(其中row和column为行偏移量和列偏移量)返回相对于另一区域在指定偏移量处的区域。
如上例选定位于当前选定区域左上角单元格的向下三行且向右一列处单元格区域。
[示例06-02]选取距当前单元格指定行数和列数的单元格
SubActiveCellOffice()
MsgBox"显示距当前单元格第3列、第2行的单元格中的值"
MsgBoxActiveCell.Offset(3,2).Value
EndSub
--------------------------------------
[示例07]调整区域的大小(Resize属性)
SubResizeRange()
DimnumRowsAsInteger,numcolumnsAsInteger
Worksheets("Sheet1").Activate
numRows=Selection.Rows.Count
numcolumns=Selection.Columns.Count
Selection.Resize(numRows+1,numcolumns+1).Select
EndSub
示例说明:
本示例调整所选区域的大小,使之增加一行一列。
--------------------------------------
[示例08]选取多个区域(Union方法)
SubtestUnion()
Dimrng1AsRange,rng2AsRange,myMultiAreaRangeAsRange
Worksheets("sheet1").Activate
Setrng1=Range("A1:
B2")
Setrng2=Range("C3:
D4")
SetmyMultiAreaRange=Union(rng1,rng2)
myMultiAreaRange.Select
EndSub
示例说明:
可用Union(range1,range2,...)返回多块区域,即该区域由两个或多个连续的单元格区域所组成。
如上例创建由单元格区域A1:
B2和C3:
D4组合定义的对象,然后选定该定义区域。
--------------------------------------
[示例09]激活已选区域中的单元格
SubActivateRange()
MsgBox"选取单元格区域B2:
D6并将C4选中"
ActiveSheet.Range("B3:
D6").Select
Range("C5").Activate
EndSub
--------------------------------------
[示例10]选取指定条件的单元格(SpecialCells方法)
SubSelectSpecialCells()
MsgBox"选择当前工作表中所有公式单元格"
ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas).Select
EndSub
--------------------------------------
[示例11]选取矩形区域(CurrentRegion属性)
'选取包含当前单元格的矩形区域
'该区域周边为空白行和空白列
SubSelectCurrentRegion()
MsgBox"选取包含当前单元格的矩形区域"
ActiveCell.CurrentRegion.Select
EndSub
--------------------------------------
[示例12]选取当前工作表中已用单元格(UsedRange属性)
'选取当前工作表中已使用的单元格区域
SubSelectUsedRange()
MsgBox"选取当前工作表中已使用的单元格区域"_
&vbCrLf&"并显示其地址"
ActiveSheet.UsedRange.Select
MsgBoxActiveSheet.UsedRange.Address
EndSub
--------------------------------------
[示例13]选取最边缘单元格(End属性)
'选取最下方的单元格
SubSelectEndCell()
MsgBox"选取当前单元格区域内最下方的单元格"
ActiveCell.End(xlDown).Select
EndSub
示例说明:
可以改变参数xlDown以选取最左边、最右边、最上方的单元格。
--------------------------------------
[示例14]设置当前单元格的前一个单元格和后一个单元格的值
SubSetCellValue()
MsgBox"将当前单元格中前面的单元格值设为""我前面的单元格"""&vbCrLf_
&"后面的单元格值设为""我后面的单元格"""
ActiveCell.Previous.Value="我前面的单元格"
ActiveCell.Next.Value="我后面的单元格"
EndSub
--------------------------------------
[示例15]确认所选单元格区域中是否有公式(HasFormula属性)
SubIfHasFormula()
IfSelection.HasFormula=TrueThen
MsgBox"所选单元格中都有公式"
Else
MsgBox"所选单元格中,部分单元格没有公式"
EndIf
EndSub
--------------------------------------
[示例16]公式单元格操作
[示例16-01]获取与运算结果单元格有直接关系的单元格
SubCalRelationCell()
MsgBox"选取与当前单元格的计算结果相关的单元格"
ActiveCell.DirectPrecedents.Select
EndSub
[示例16-02]追踪公式单元格
SubCal1()
MsgBox"选取计算结果单元格相关的所有单元格"
ActiveCell.Precedents.Select
EndSub
SubTrackCell()
MsgBox"追踪运算结果单元格"
ActiveCell.ShowPrecedents
EndSub
SubDelTrack()
MsgBox"删除追踪线"
ActiveCell.ShowPrecedentsRemove:
=True
EndSub
--------------------------------------
[示例17]复制单元格(Copy方法)
SubCopyRange()
MsgBox"在单元格B7中写入公式后,将B7的內容复制到C7:
D7內"
Range("B7").Formula="=Sum(B3:
B6)"
Range("B7").CopyDestination:
=Range("C7:
D7")
EndSub
--------------------------------------
[示例18]获取单元格行列值(Row属性和Column属性)
SubRangePosition()
MsgBox"显示所选单元格区域的行列值"
MsgBox"第"&Selection.Row&"行"&Selection.Column&"列"
EndSub
--------------------------------------
[示例19]获取单元格区域的单元格数及行列数(Rows属性、Columns属性和Count属性)
SubGetRowColumnNum()
MsgBox"显示所选取单元格区域的单元格数、行数和列数"
MsgBox"单元格区域中的单元格数为:
"&Selection.Count
MsgBox"单元格区域中的行数为:
"&Selection.Rows.Count
MsgBox"单元格区域中的列数为:
"&Selection.Columns.Count
EndSub
--------------------------------------
[示例20]设置单元格中的文本格式
[示例20-01]对齐文本
SubHorizontalAlign()
MsgBox"将所选单元格区域中的文本左右对齐方式设为居中"
Selection.HorizontalAlignment=xlHAlignCenter
EndSub
SubVerticalAlign()
MsgBox"将所选单元格区域中的文本上下对齐方式设为居中"
Selection.RowHeight=36
Selection.VerticalAlignment=xlVAlignCenter
EndSub
[示例20-02]缩排文本(InsertIndent方法)
SubIndent()
MsgBox"将所选单元格区域中的文本缩排值加1"
Selection.InsertIndent1
MsgBox"将缩排值恢复"
Selection.InsertIndent-1
EndSub
[示例20-03]设置文本方向(Orientation属性)
SubChangeOrientation()
MsgBox"将所选单元格中的文本顺时针旋转45度"
Selection.Orientation=45
MsgBox"将文本由横向改为纵向"
Selection.Orientation=xlVertical
MsgBox"将文本方向恢复原值"
Selection.Orientation=xlHorizontal
EndSub
[示例20-04]自动换行(WrapText属性)
SubChangeRow()
Dimi
MsgBox"将所选单元格设置为自动换行"
i=Selection.WrapText
Selection.WrapText=True
MsgBox"恢复原状"
Selection.WrapText=i
EndSub
[示例20-05]将比单元格列宽长的文本缩小到能容纳列宽大小(ShrinkToFit属性)
SubAutoFit()
Dimi
MsgBox"将长于列宽的文本缩到与列宽相同"
i=Selection.ShrinkToFit
Selection.ShrinkToFit=True
MsgBox"恢复原状"
Selection.ShrinkToFit=i
EndSub
--------------------------------------
[示例21]设置条件格式(FormatConditions属性)
SubFormatConditions()
MsgBox"在所选单元格区域中将单元格值小于10的单元格中的文本变为红色"
Selection.FormatConditions.AddType:
=xlCellValue,_
Operator:
=xlLessEqual,Formula1:
="10"
Selection.FormatConditions
(1).Font.ColorIndex=3
MsgBox"恢复原状"
Selection.FormatConditions
(1).Font.ColorIndex=xlAutomatic
EndSub
--------------------------------------
[示例22]插入批注(AddComment方法)
SubEnterComment()
MsgBox"在当前单元格中输入批注"
ActiveCell.AddComment("Hello")
ActiveCell.Comment.Visible=True
EndSub
--------------------------------------
[示例23]隐藏/显示单元格批注
SubCellComment()
MsgBox"切换当前单元格批注的显示和隐藏状态"
ActiveCell.Comment.Visible=Not(ActiveCell.Comment.Visible)
EndSub
--------------------------------------
[示例24]改变所选单元格的颜色
SubChangeColor()
DimiroAsInteger
MsgBox"将所选单元格的颜色改为红色"
iro=Selection.Interior.ColorIndex
Selection.Interior.ColorIndex=3
MsgBox"将所选单元格的颜色改为蓝色"
Selection.Interior.Color=RGB(0,0,255)
MsgBox"恢复原状"
Selection.Interior.ColorIndex=iro
EndSub
--------------------------------------
[示例25]改变单元格的图案
SubChangePattern()
Dimp,pc,i
MsgBox"依Pattern常数值的顺序改变所选单元格的图案"
p=Selection.Interior.Pattern
pc=Selection.Interior.PatternColorIndex
Fori=9To16
WithSelection.Interior
.Pattern=i
.PatternColor=RGB(255,0,0)
EndWith
MsgBox"常数值"&i
Nexti
MsgBox"恢复原状"
Selection.Interior.Pattern=p
Selection.Interior.PatternColorIndex=pc
EndSub
--------------------------------------
[示例26]合并单元格
SubMergeCells()
MsgBox"合并单元格A2:
C2,并将文本设为居中对齐"
Range("A2:
C2").Select
WithSelection
.MergeCells=True
.HorizontalAlignment=xlCenter
EndWith
EndSub
--------------------------------------
[示例27]限制单元格移动的范围
SubScrollArea1()
MsgBox"将单元格的移动范围限制在单元格区域B2:
D6中"
ActiveSheet.ScrollArea="B2:
D6"
EndSub
SubScrollArea2()
MsgBox"解除移动范围限制"
ActiveSheet.ScrollArea=""
EndSub
--------------------------------------
[示例28]获取