您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 总结/报告 > 免费-Excel之VBA编程之引用单元格
Excel之VBA编程之引用单元格、区域的各种方法Excel单元格引用、区域的引用,在VBA编程中,有着重要的意义。掌握单元格、区域的引用方法,可方便我们对数据进行相应的处理。下面,是单元格、区域的引用方法之总结,希望对您有帮助。①用范围来引用单元格及区域可使用Range属性来引用A1引用样式中的单元格或单元格区域。下述子程序将单元格区域A1:D5的字体设置为加粗。Workbooks(Book2).Sheets(Sheet2).Range(A1:D5).Font.Bold=True下表演示了使用Range属性的一些A1样式引用。引用含义----------------------------------Range(A1)单元格A1Range(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列②用编号引用单元格通过使用行列编号,可用Cells属性来引用单个单元格。该属性返回代表单个单元格的Range对象。下例中,Cells(6,1)返回Sheet1上的单元格A6,然后将Value属性设置为10。Worksheets(Sheet1).Cells(6,1).Value=10因为可用变量替代编号,所以Cells属性非常适合于在单元格区域中循环,如下例所示。DimCounterAsIntegerForCounter=1To20Worksheets(Sheet1).Cells(Counter,3).Value=CounterNextCounter注意如果要同时更改某一单元格区域中所有单元格的属性或对其应用方法,可使用Range属性。③引用行和列可用Rows属性或Columns属性来处理整行或整列。这两个属性返回代表单元格区域的Range对象。下例中,用Rows(1)返回Sheet1上的第一行,然后将单元格区域的Font对象的Bold属性设置为True。Worksheets(Sheet1).Rows(1).Font.Bold=True下表举例说明了使用Rows和Columns属性的一些行和列的引用。引用含义------------------------Rows(1)第一行Rows工作表上所有的行Columns(1)第一列Columns(A)第一列Columns工作表上所有的列若要同时处理若干行或列,请创建一个对象变量并使用Union方法,将对Rows属性或Columns属性的多个调用组合起来。下例将活动工作簿中第一张工作表上的第一行、第三行和第五行的字体设置为加粗。Worksheets(Sheet1).ActivateDimmyUnionAsRangeSetmyUnion=Union(Rows(1),Rows(3),Rows(5))myUnion.Font.Bold=True④用快捷记号引用单元格可用方括号将A1引用样式或命名区域括起来,作为Range属性的快捷方式。这样就不必键入单词“Range”或使用引号,如下例所示。Worksheets(Sheet1).[A1:B5].ClearContents[MyRange].Value=30⑤引用命名区域用名称比用A1样式记号更容易标识单元格区域。若要命名选定的单元格区域,请单击编辑栏左端的名称框,键入名称,再按Enter。⑥引用命名区域下例引用了名为“MyBook.xls”的工作簿中的名为“MyRange”的单元格区域。Range(MyBook.xls!MyRange).Font.Italic=True下例引用名为“Report.xls”的工作簿中的特定工作表单元格区域“Sheet1!Sales”。Range([Report.xls]Sheet1!Sales).BorderAroundWeight:=xlthin若要选定命名区域,请用GoTo方法,该方法将激活工作簿和工作表,然后选定该区域。Application.GotoReference:=MyBook.xls!MyRangeSelection.ClearContents下例显示对于活动工作簿将如何编写相同的过程。Application.GotoReference:=MyRangeSelection.ClearContents在命名区域中的单元格上循环下例用ForEach...Next循环语句在命名区域中的每一个单元格上循环。如果该区域中的任一单元格的值超过limit的值,就将该单元格的颜色更改为黄色。ConstLimitAsInteger=25ForEachcInRange(MyRange)Ifc.ValueLimitThenc.Interior.ColorIndex=27EndIfNextc΄⑦相对于其他单元格来引用单元格处理相对于另一个单元格的某一单元格的常用方法是使用Offset属性。下例中,将位于活动工作表上活动单元格下一行和右边三列的单元格的内容设置为双下划线格式。ActiveCell.Offset(1,3).Font.Underline=xlDouble注意可录制使用Offset属性(而不是绝对引用)的宏。在“工具”菜单上,指向“宏”,再单击“录制新宏”,然后单击“确定”,再单击录制宏工具栏上的“相对引用”按钮。若要在单元格区域中循环,请在循环中将变量与Cells属性一起使用。下例以5为步长,用5到100之间的值填充第三列的前20个单元格。变量counter用作Cells属性的行号。DimcounterAsIntegerForcounter=1To20Worksheets(Sheet1).Cells(counter,3).Value=counter*5Nextcounter⑧用Range对象引用单元格如果将对象变量设置为Range对象,即可用变量名方便地操作单元格区域。下述过程创建了对象变量myRange,然后将活动工作簿中Sheet1上的单元格区域A1:D5赋予该变量。随后的语句用该变量代替该区域对象,以修改该区域的属性。DimmyRangeAsRangeSetmyRange=Worksheets(Sheet1).Range(A1:D5)myRange.Formula==RAND()myRange.Font.Bold=True⑨引用工作表上的所有单元格如果对工作表应用Cells属性时不指定编号,该属性将返回代表工作表上所有单元格的Range对象。下述Sub过程清除活动工作簿中Sheet1上的所有单元格的内容。Worksheets(Sheet1).Cells.ClearContents⑩引用多个单元格区域使用适当的方法可以很容易地同时引用多个单元格区域。可用Range和Union方法引用任意组合的单元格区域;用Areas属性可引用工作表上选定的一组单元格区域。使用Range属性通过在两个或多个引用之间放置逗号,可使用Range属性来引用多个单元格区域。下例清除了Sheet1上三个单元格区域的内容。Worksheets(Sheet1).Range(C5:D9,G9:H16,B14:D18)._ClearContents命名区域使得用Range属性处理多个单元格区域更为容易。下例可在三个命名区域处于同一工作表时运行。Range(MyRange,YourRange,HisRange).ClearContents使用Union方法用Union方法可将多个单元格区域组合到一个Range对象中。下例创建了名为myMultipleRange的Range对象,并将其定义为单元格区域A1:B2和C3:D4的组合,然后将该组合区域的字体设置为加粗。Dimr1,r2,myMultipleRangeAsRangeSetr1=Sheets(Sheet1).Range(A1:B2)Setr2=Sheets(Sheet1).Range(C3:D4)SetmyMultipleRange=Union(r1,r2)myMultipleRange.Font.Bold=True使用Areas属性可用Areas属性引用选定的单元格区域或多块选定区域中的区域集合。下述过程计算选定区域中的块数目,如果有多个块,就显示一则警告消息。IfSelection.Areas.Count1ThenMsgBoxCannotdothistoamultipleselection.EndIf在VBA代码中引用Excel工作表中单元格区域的方式小结΄在使用ExcelVBA进行编程时,我们通常需要频繁地引用单元格区域,然后再使用相应的属性和方法对区域进行操作。所谓单元格区域,指的是单个的单元格、或者是由多个单元格组成的区域、或者是整行、整列等。下面,我们设定一些情形,以问答的形式对引用单元格区域的方式进行归纳。--------------------------------------------------------------------------------问题一:在VBA代码中,如何引用当前工作表中的单个单元格(例如引用单元格C3)?回答:可以使用下面列举的任一方式对当前工作表中的单元格(C3)进行引用。(1)Range(C3)(2)[C3](3)Cells(3,3)(4)Cells(3,C)(5)Range(C4).Offset(-1)Range(D3).Offset(,-1)Range(A1).Offset(2,2)(6)若C3为当前单元格,则可使用:ActiveCell(7)若将C3单元格命名为“Range1”,则可使用:Range(Range1)或[Range1](8)Cells(4,3).Offset(-1)--------------------------------------------------------------------------------问题二:在VBA代码中,我要引用当前工作表中的B2:D6单元格区域,有哪些方式?回答:可以使用下面列举的任一方式对当前工作表中单元格区域B2:D6进行引用。(1)Range(“B2:D6”)(2)Range(B2,D6)(3)[B2:D6](4)Range(Range(B2),Range(D6))(5)Range(Cells(2,2),Cells(6,4))(6)若将B2:D6区域命名为“MyRange”,则又可以使用下面的语句引用该区域:①Range(MyRange)②[MyRange](7)Range(B2).Resize(5,3)(8)Range(A1:C5).Offset(1,1)(9)若单元格B2为当前单元格,则可使用语句:Range(ActiveCell,ActiveCell.Offset(4,2))(10)若单元格D6为当前单元格,则可使用语句:Range(B2,ActiveCell)--------------------------------------------------------------------------------问题三:在VBA代码中,如何使用变量实现对当前工作表中不确定单元格区域的引用?回答:有时,我们需要在代码中依次获取工作表中特定区域内的单元格,这通常可以采取下面的几种方式:(1)Range(“A”&i)(2)Range(“A”&i&“:C”&i)(3)Cells(i,1)(4)Cells(i,j)其中,i、j为变量,在循环语句中指定i和j的范围后,依次获取相应单元格。--------------------------------------------------------------------------------问题四:在VBA代码中,如何扩展引用当前工作表中的单元格区域?回答:可以使用Resize属性,例如:(1)ActiveCell.Resize(4,4),
本文标题:免费-Excel之VBA编程之引用单元格
链接地址:https://www.777doc.com/doc-1676041 .html