还记得上期我们给大家介绍过的Excel VBA的Application(Excel程序本身)对象和 Workbook(工作薄)对象吗?怎么样,挺有收获的吧。那这一期我们继续来学习Excel VBA中的另外两个非常重要的对象:WorkSheet(工作表)对象和Range对象。 三、WorkSheets、Worksheet对象及其应用 WorkSheets(工作表对象集)是Workbook的下一层对象集,它包含最多255个工作表(Worksheet)对象。引用工作对象的方法有两种: MsgBox Worksheets("sheet2").Name MsgBox Worksheets(3).Name 前一种方法是使用工作表名“sheet2”来引用的,后一种方法是使用工作表在工作薄中的位置(即索引号)来引用的。 常用的Worksheets对象和Worksheet对象的属性和方法有:ActiveSheet(活动工作表)属性、Name(名称)属性、Visible(隐藏)属性、Select(选定)方法、Copy(复制)和Move(移动)方法、Paste(粘贴)方法、Delete(删除)方法以及Add(添加)方法等等。 1、ActiveSheet属性可用于活动工作表的引用,下面的代码可激活工作表Sheet3并预览该工作表: Worksheets("sheet3").Activate ActiveSheet.PrintPreview 2、Name属性用于返回指定工作表对象的名字。如将工作表sheet1的标签名改为“工资表”: Worksheets("sheet1").Name = "工资表" 3、Visible属性用来显示和隐藏指定工作表对象,值为true时(默认)工作表可见,False时不可见。如隐藏倒数第2张工作表对象: Worksheets(Sheets.Count - 1).Visible = False 4、Select方法用于工作表对象的选定。VBA操作中经常会遇到在不同的工作表间传递数据的操作,此时可反复使用Select方法来选中不同的工作表对象。 5、Copy和Move方法用来复制和移动指定的单元格区域或工作表对象。如复制工作表sheet2到所有工作表的最后以及移动工作表Sheet3到所有工作表的最前面的代码分别如下: Worksheets("sheet2").Copy after:=Worksheets(Sheets.Count) Worksheets("sheet3").Move before:=Worksheets(1) 这里需要说明的是:用Worksheets(1)比用Worksheets("sheet1")要好一些,因为有时sheet1的位置可能不在所有工作表的最前面。 6、Paste方法用于将剪贴板中的数据粘贴到指定的工作表中。如复制工作表sheet1中的A列数据到sheet2的D列中。 Worksheets("sheet1").Range("A:A").Copy ActiveSheet.Paste Destination:=Worksheets("sheet2").Range("D:D") 7、Delete方法用于删除指定的工作表对象。需要注意的是系统在删除工作表时会出现警告提示要求用户确认是否删除,如果不希望出现此提示框,可使用“Application.DisplayAlerts = False”语句屏蔽该提示框的显示。 8、Add方法用于向工作薄中添加工作表对象,最后一次添加的工作表将成为活动工作表。下面的语句可一次向工作薄中添加三张工作表并且放在所有工作表的最后。 Worksheets.Add Count:=3, after:=Worksheets(Sheets.Count) 四、Range对象及其应用 Range(单元格或单元格区域)是Worksheet的下一层对象,它可以是某个单元格(Cell)、某一行(Row)、某一列(Column)或多个连续或不连续的单元格区域对象,熟练地使用这些对象可以方便地操作工作表中的其它对象和数据。 Range对象的属性和方法主要有:Cells(单元格)属性、UsedRange(已使用的单元格区域)属性、Formula(公式)属性、Name(单元格区域名称)属性、Value(值)属性、Autofit(自动行高列宽)方法、Clear(清除所有内容)方法、ClearContents(清除内容)方法ClearFormats(清除格式)方法、Delete(删除)方法以及Copy(复制)、Cut(剪切)、Paste(粘贴)等方法。 1、Cells属性用于指定单元格区域中的某个单元格对象,可用Cells(i,j)来表示,其中i表示行号,j表示列号,如“Cells(2,3)= 20”表示给单元格C2赋值为20。 2、UsedRange属性用来表示指定工作表中已使用的单元格区域对象。如果要选中当前活动工作表中的单元格区域可使用下面的代码: ActiveSheet.UsedRange.Select 在循环语句中经常要用到已有数据区域的最大行数或列数就可以用UsedRange.Rows.Count或UsedRange.Columns.Count来实现。 3、Formula属性可用来向指定的单元格对象中输入公式。Excel中函数的功能非常强大,编程时可充分使用这些函数来提高程序运行的效率,下面的例子就是向单元格C1中输入公式“=sum(a1:b1)”: Range("c1").Formula = "=sum(a1:b1)" 如果要向单元格中返回一个数组公式则可以使用FormulaArray属性。 4、Name属性用来为一个单元格或单元格区域对象定义名称。下面的例子就是将单元格区域A1:A20命名为“IDname”:
Range("A1:A20").Name = "IDname" 5、Value属性用来给某个单元格或单元格区域赋值。下面的代码可一次性给A1:F1中的所有单元格赋值为“合格”: Range("A1:F1").Value = "合格" 通常情况下,Value可以省略,即可直接使用“Range("A1:F1") = "合格"”。 6、Autofit方法可自动调整单元格的行高和列宽为最合适的值。下面的两行代码可将第1行到100行以及A列到H列调整到最合适的行高和列宽。 ActiveSheet.Columns("a:h").AutoFit ActiveSheet.Rows("1:100").AutoFit 7、Clear、ClearComments、ClearContents和ClearFormats等方法分别用来清除单元格区域中的所有内容、批注、内容和格式,可根据需要选择相应的清除的方法。 Range(Cells(1, 1), Cells(5, 5)).ClearContents Range("A1:E5").ClearFormats 前一句代码清除的是A1:E5之间的数据(不清除格式),后一句代码清除的是A1:E5之间的格式(保留数据),如果要清除单元格区域中的所有内容(含数据和格式以及批注等)则需要选择Clear方法。 8、Delete方法用于删除指定的单元格或单元格区域对象。如删除A1:E5间的单元格: Range("A1:E5").Delete 在需要注意的是:Delete方法在删除数据的同时删除单元格本身,而Clear方法只用于清除单元格中的内容,但并不删除单元格本身。 除了上面介绍的这些属性和方法,另外Range对象还具有Copy(复制)、Cut(剪切)、Paste(粘贴)以及单元格的格式设置等方法,这些方法的使用与前面介绍过的工作表对象的方法在很大程度上是类似的,各位读者朋友可自行尝试并操作实践。 一口气学完了Excel VBA中的四个对象以及它们的简单的应用,相信大家已经入门了,继续努力噢,Excel中的对象的属性和方法远不止上面所介绍的这些,如果要想获取更多的详细信息大家可参阅Excel VBA的联机帮助以及关注我们后面陆续给大家准备的专题。 |
|