Range对象基本操作应用示例(1)Range对象可能是VBA代码中最常用的对象,Range对象可以是某一单元格、某一单元格区域、某一行、某一列、或者是多个连续或非连续的区域组成的区域。下面介绍Range对象的一些属性和方法。--------------------------------------[示例05-01]赋值给某单元格[示例05-01-01]Subtest1()Worksheets(Sheet1).Range(A5).Value=22MsgBox工作表Sheet1内单元格A5中的值为_&Worksheets(Sheet1).Range(A5).ValueEndSub[示例05-01-02]Subtest2()Worksheets(Sheet1).Range(A1).Value=_Worksheets(Sheet1).Range(A5).ValueMsgBox现在A1单元格中的值也为&_Worksheets(Sheet1).Range(A5).ValueEndSub[示例05-01-03]Subtest3()MsgBox用公式填充单元格,本例为随机数公式Range(A1:H8).Formula==Rand()EndSub[示例05-01-04]Subtest4()Worksheets(1).Cells(1,1).Value=24MsgBox现在单元格A1的值为24EndSub[示例05-01-05]Subtest5()MsgBox给单元格设置公式,求B2至B5单元格区域之和ActiveSheet.Cells(2,1).Formula==Sum(B1:B5)EndSub[示例05-01-06]Subtest6()MsgBox设置单元格C5中的公式.Worksheets(1).Range(C5:C10).Cells(1,1).Formula==Rand()EndSub--------------------------------------[示例05-02]引用单元格SubRandom()DimmyRangeAsRange'设置对单元格区域的引用SetmyRange=Worksheets(Sheet1).Range(A1:D5)'对Range对象进行操作myRange.Formula==RAND()myRange.Font.Bold=TrueEndSub示例说明:可以设置Range对象变量来引用单元格区域,然后对该变量所代表的单元格区域进行操作。--------------------------------------[示例05-03]清除单元格[示例05-03-01]清除单元格中的内容(ClearContents方法)SubtestClearContents()MsgBox清除指定单元格区域中的内容Worksheets(1).Range(A1:H8).ClearContentsEndSub[示例05-03-02]清除单元格中的格式(ClearFormats方法)SubtestClearFormats()MsgBox清除指定单元格区域中的格式Worksheets(1).Range(A1:H8).ClearFormatsEndSub[示例05-03-03]清除单元格中的批注(ClearComments方法)SubtestClearComments()MsgBox清除指定单元格区域中的批注Worksheets(1).Range(A1:H8).ClearCommentsEndSub[示例05-03-04]清除单元格中的全部,包括内容、格式和批注(Clear方法)SubtestClear()MsgBox彻底清除指定单元格区域Worksheets(1).Range(A1:H8).ClearEndSub--------------------------------------[示例05-04]Range和CellsSubtest()'设置单元格区域A1:J10的边框线条样式WithWorksheets(1).Range(.Cells(1,1),_.Cells(10,10)).Borders.LineStyle=xlThickEndWithEndSub示例说明:可用Range(cell1,cell2)返回一个Range对象,其中cell1和cell2为指定起始和终止位置的Range对象。--------------------------------------[示例05-05]选取单元格区域(Select方法)SubtestSelect()'选取单元格区域A1:D5Worksheets(Sheet1).Range(A1:D5).SelectEndSub--------------------------------------[示例05-06]基于所选区域偏离至另一区域(Offset属性)[示例05-06-01]SubtestOffset()Worksheets(Sheet1).ActivateSelection.Offset(3,1).SelectEndSub示例说明:可用Offset(row,column)(其中row和column为行偏移量和列偏移量)返回相对于另一区域在指定偏移量处的区域。如上例选定位于当前选定区域左上角单元格的向下三行且向右一列处单元格区域。[示例05-06-02]选取距当前单元格指定行数和列数的单元格SubActiveCellOffice()MsgBox显示距当前单元格第3列、第2行的单元格中的值MsgBoxActiveCell.Offset(3,2).ValueEndSub--------------------------------------[示例05-07]调整区域的大小(Resize属性)SubResizeRange()DimnumRowsAsInteger,numcolumnsAsIntegerWorksheets(Sheet1).ActivatenumRows=Selection.Rows.Countnumcolumns=Selection.Columns.CountSelection.Resize(numRows+1,numcolumns+1).SelectEndSub示例说明:本示例调整所选区域的大小,使之增加一行一列。--------------------------------------[示例05-08]选取多个区域(Union方法)SubtestUnion()Dimrng1AsRange,rng2AsRange,myMultiAreaRangeAsRangeWorksheets(sheet1).ActivateSetrng1=Range(A1:B2)Setrng2=Range(C3:D4)SetmyMultiAreaRange=Union(rng1,rng2)myMultiAreaRange.SelectEndSub示例说明:可用Union(range1,range2,...)返回多块区域,即该区域由两个或多个连续的单元格区域所组成。如上例创建由单元格区域A1:B2和C3:D4组合定义的对象,然后选定该定义区域。--------------------------------------[示例05-09]激活已选区域中的单元格SubActivateRange()MsgBox选取单元格区域B2:D6并将C4选中ActiveSheet.Range(B3:D6).SelectRange(C5).ActivateEndSub--------------------------------------[示例05-10]选取指定条件的单元格(SpecialCells方法)SubSelectSpecialCells()MsgBox选择当前工作表中所有公式单元格ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas).SelectEndSub--------------------------------------[示例05-11]选取矩形区域(CurrentRegion属性)'选取包含当前单元格的矩形区域'该区域周边为空白行和空白列SubSelectCurrentRegion()MsgBox选取包含当前单元格的矩形区域ActiveCell.CurrentRegion.SelectEndSub--------------------------------------[示例05-12]选取当前工作表中已用单元格(UsedRange属性)'选取当前工作表中已使用的单元格区域SubSelectUsedRange()MsgBox选取当前工作表中已使用的单元格区域_&vbCrLf&并显示其地址ActiveSheet.UsedRange.SelectMsgBoxActiveSheet.UsedRange.AddressEndSub--------------------------------------[示例05-13]选取最边缘单元格(End属性)'选取最下方的单元格SubSelectEndCell()MsgBox选取当前单元格区域内最下方的单元格ActiveCell.End(xlDown).SelectEndSub示例说明:可以改变参数xlDown以选取最左边、最右边、最上方的单元格。--------------------------------------[示例05-14]设置当前单元格的前一个单元格和后一个单元格的值SubSetCellValue()MsgBox将当前单元格中前面的单元格值设为我前面的单元格&vbCrLf_&后面的单元格值设为我后面的单元格ActiveCell.Previous.Value=我前面的单元格ActiveCell.Next.Value=我后面的单元格EndSub--------------------------------------[示例05-15]确认所选单元格区域中是否有公式(HasFormula属性)SubIfHasFormula()IfSelection.HasFormula=TrueThenMsgBox所选单元格中都有公式ElseMsgBox所选单元格中,部分单元格没有公式EndIfEndSub--------------------------------------[示例05-16]公式单元格操作[示例05-16-01]获取与运算结果单元格有直接关系的单元格SubCalRelationCell()MsgBox选取与当前单元格的计算结果相关的单元格ActiveCell.DirectPrecedents.SelectEndSub[示例05-16-02]追踪公式单元格SubCal1()MsgBox选取计算结果单元格相关的所有单元格ActiveCell.Precedents.SelectEndSubSubTrackCell()MsgBox追踪运算结果单元格ActiveCell.ShowPrecedentsEndSubSubDelTrack()MsgBox删除追踪线ActiveCell.ShowPrecedentsRemove:=TrueEndSub--------------------------------------[示例05-17]复制单元格(Copy方法)SubCopyRange()MsgBox在单元格B7中写入公式后,将B7的內容复制到C7:D7內Range(B7).Formula==Sum(B3:B6)Range(B7).CopyDestination:=Range(C7:D7)EndSub--------------------------------------[示例05-18]获取单元格行列值(Row属性和Column属性)SubRangePosition()MsgBox显示所选单元格区域的行列值MsgBox第&Selection.Row&行&Selection