]ExcelVBA编程系列之对象模型(1)VBA入门文章,整理了近两天,希望能给VBA初学者有所帮助.Excel2003对象模型编程快速入门[摘要]本文全面概括地讲解了一些关于Excel2003对象模型编程的基础知识,包括创建VBA子程序和宏,对象、方法、属性和集合的基本概念,如何使用事件、使用窗体创建对话框等,为您提供了使用程序自动化处理工作的基本方法。阅读本文后,您应该对关键的编程概念和知识有所了解,并能开发一些简单实用的应用程序以解决工作中遇到的实际问题。通过一个示例认识ExcelVBA程序首先,让我们看看下面的代码,在每行代码的前面都附有代码功能的解释。Sub隔行设置背景色()'声明常量值为15,即灰色的颜色索引值ConstGray=15'选择工作表中的第2行,其中活动单元格为最左边的单元格Range(A2).EntireRow.Select'开始循环.若活动单元格不为空,则重复循环,'直到活动单元格值为空时退出循环DoWhileActiveCell.Value'将所选行背景色设置为常量值Gray所代表的颜色,'本例中为灰色即15所代表的颜色索引值色Selection.Interior.ColorIndex=Gray'选择从活动单元格起向下的第2行'选择整行后,其活动单元格为最左边的单元格ActiveCell.Offset(2,0).EntireRow.SelectLoopEndSub试试看,在Excel中运行上面的程序,只用短短的6行代码,就能迅速地将你当前工作表中每隔一行添加背景色,使你的工作表更具有可读性。通过Excel对象模型编程,可以:定制Excel,实现自动化操作,以满足你特定的需要添加额外的功能节省时间和资源提示学习需要实践,将所学习到的知识通过实践才能真正理解和掌握。因此,边阅读边上机操作,才能达到好的学习效果。认识VBA和宏VBA是VB整合到MicrosoftOffice应用程序中的一个版本,在VBA中创建的代码也称作宏,宏是一系列的VB指令,通过在VB指令中使用Excel对象模型来执行Excel操作任务。在Excel中,你可以通过自已写代码来创建宏,也可以通过宏录制器来创建宏。■创建宏开启Excel2003,选择菜单“工具——宏——宏”,出现的“宏”对话框。在“宏名”文本框中输入所创建宏的名字,如“我的第一个宏”,单击“创建”按钮,Excel将自动打开VBE编辑器。缺省的VBE编辑器显示了3个窗口(可在“视图”菜单中控制是否显示),即:●代码窗口窗口标题为“Book1–[模块1(代码)]”。在该窗口中编写程序代码。也可在“工程窗口”中双击模块名或对象名打开相应的代码窗口。●工程窗口位于屏幕左侧上方,窗口标题为“工程-VBAProject”。该窗口中显示了当前所有的Excel对象和模块,方便查看和管理。如单击“MicrosoftExcel对象”前的加号将展开所有的对象,当前共有4个对象即Sheet1,Sheet2,Sheet3和ThisWorkbook。●属性窗口位于屏幕左侧下方,窗口标题为”属性-模块1”。该窗口显示了当前所选项目的属性设置。在这里,所选项为模块1,可在属性窗口中为模块1改名为一个合适的名字,如在名称文本框中,输入“我的第一个模块”后按Enter键,则工程窗口中的模块名称和代码窗口标题名称也相应变化。现在,在“我的第一个宏”程序中输入下面的代码:Sub我的第一个宏()DimwsAsWorksheetSetws=ActiveWorkbook.Worksheets.AddRange(A1).Value=Iamastudent.EndSub您先不需要明白这些代码的含义以及它们如何工作,以后我们会讲解。接下来,关闭VBE编辑器,返回Excel主界面(可单击VBE编辑器左上角的Excel图标或选择菜单命令来进行此操作)。然后,选择菜单“工具——宏——宏”,可看到在出现的“宏”对话框中已选取了“我的第一个宏”,单击“执行”按钮,此时,一个新的工作表被创建,且在该工作表的单元格A1中自动输入文本“Iamastudent.”■录制宏除了在VBE编辑器中通过输入代码创建宏之外,您还可以通过宏录制器录制菜单命令、按键和其它操作来创建宏。首先,选择菜单“工具——宏——录制新宏”,在弹出的“录制新宏”对话框中输入宏名,如“年级”;在“快捷键”文本框中,输入使所录制的宏运行的快捷键,如B;在“保存在”下拉框中选“当前工作簿”;在“说明”文本框中输入宏的功能描述,如“自动生成年级号”,单击“确定”按钮,开始录制宏。此时,在工作表中出现一个如下图1所示的悬浮的工具栏,有两个按钮,其中左边为“停止录制”按钮,右边为“相对引用”按钮。此主题相关图片如下:图1然后,在单元格A1中输入“一年级”,A2中输入“二年级”,单击“停止录制”按钮。最后,测试刚录制的宏。清除工作表中的内容后,按Ctrl+Shift+B组合键,Excel将运行刚才所录制宏,在单元格A1和A2中自动输入“一年级”和“二年级”。提示关于宏安全性。当你打开含有宏程序的工作簿时,Excel会检查该工作簿中是否含有宏,若有,则会弹出“安全警告”对话框(在安全性级别设置为中的情况下),若点击“启用宏”按钮,宏将运行。注意,对于未知宏,最好先使用杀毒软件确保无宏病毒后再运行。子程序先看看刚才编写的代码:Sub我的第一个宏()DimwsAsWorksheetSetws=ActiveWorkbook.Worksheets.AddRange(A1).Value=Iamastudent.EndSub关健词Sub…EndSub开始和结束宏,其格式为:Sub宏名()代码EndSub一个子程序由一组代码语句组成,以Sub开始,以EndSub结束。一个子程序不一定是宏。您能在一个子程序中调用另一个子程序。如:Sub我的另一个宏()我的第一个宏EndSub如果运行“我的另一个宏”子程序,则调用”我的第一个子程序”,添加一个单元格A1内容为”Iamastudent.”的新工作表。创建单独的子程序能更清晰地组织你的代码,更容易地处理通用过程。例如,若需创建并显示3个工作表,则可将上面代码改写为:Sub我的另一个宏()我的第一个宏我的第一个宏我的第一个宏EndSub即将“我的第一个宏”子程序运行三次,不仅实现了最终的目标,而且也简化了代码。对象、方法和属性Excel对象模型使用面向对象编程方式。听起来很高深,其实很简单,您只需了解对象、方法和属性三个基本的概念,就可以先入门了。对象,即某物;方法,即某物能做的事情;属性,即某物的特征。例如,一台空调即为一个对象,空调能做的事情如制冷、制热、换气等是它的方法,而对空调的描述则是它的属性,如空调的颜色为白色、尺寸大小等。让我们来看看刚才程序中所使用的代码,并区分对象、方法和属性。Setws=ActiveWorkbook.Worksheets.AddRange(A1).Value=Iamastudent.这里有三个对象,即ws代表Worksheet对象,ActiveWorkbook对象代表当前工作簿,Range对象代表在当前工作表中的单元格区域。提示Excel对象模型就是我们所能使用来编制Excel程序的对象列表。当第一次使用某对象变量时,以Set关键字开始,为该对象分配所需的内存空间,并可为对象变量命以合适的名字,如上面的的ws。方法总是与对象相关联。如在“我的第一个宏”程序代码中包含一个Add方法,它与ws对象相关。使用方法时,应在对象和方法之间添加一个句点,如Worksheets.Add。在上面的代码中,使用Add方法在活动工作簿中添加了一个新的工作表。属性也总是与对象相关联。在上面的代码中,包含一个属性Value,它与Range对象相关。同方法一样,使用属性时,也应在对象与属性之间添加一个句点,如Range.Rowheight。每个对象都是一种特定的对象类型,每类对象都有自已的一组方法和属性。在上面的代码中,ws是一个Worksheet对象,有方法如Visible,有属性如Count。属于Worksheet对象的方法和属性,其它类型的对象可能没有,反之,其它对象有的方法,Worksheet对象不一定也有,如执行语句Worksheet.Value=”Hello”将会出现错误,因为Worksheet对象没有Value属性。使用事件先编写一个宏。按前面所述的方法,创建一个名为“考勤记录表”的宏程序,即在工作表菜单中选择“工具——宏——宏”,输入名称“考勤记录表”,单击“创建”按钮,自动打开VBE编辑器,选中“模块1”,在工程属性窗口的名称框中输入“考勤记录表”。然后,在代码窗口中输入如下代码:Sub考勤记录表()DimwsAsWorksheetSetws=ActiveWorkbook.Worksheets.AddRange(A1).Value=年级Range(C1).Value=班级Range(B3).Value=姓名Range(D3).Value=考勤Range(B4).Value=正常Range(B5).Value=迟到Range(B6).Value=早退Range(B7).Value=缺课Range(B8).Value=实到EndSub我们先设想一下,当你打开工作簿时,如果上面的程序能自动运行,生成你每天想要的表格,该多好啊!这是可以实现的,你能使用对象事件来完成。当某事情发生在某对象上时,该对象的一个事件发生。例如,当单击一个按钮时,一个Click事件发生在该按钮对象上。当开启Excel时,Auto_Open事件发生,因此,要想当Excel打开时,某程序运行,则将该程序置于Open事件程序中即可。打开Excel2003,开启VBE编辑器(可在工作表菜单工具——宏中选择,也可按Alt+F11组合键),先创建上面的“考勤记录表”宏程序。接下来,在工程窗口的MicrosoftExcel对象模型中找到“ThisWorkbook”并双击,打开标题为ThisWorkbook的代码窗口,可以看到在该窗口顶部有两个下拉框,点击左边的对象列表下拉框,选择“Workbook”,VBE编辑器自动添加SubWorkbook_Open事件过程,该Open事件将在Excel开启时自动运行。现在,在该事件过程中添加需要在Excel开启时自动运行的宏程序代码,本例中,要使得当Excel工作簿打开时,“考勤记录表”程序自动运行以建立一张表单,代码如下:PrivateSubWorkbook_Open()考勤记录表EndSub保存工作表后退出,重新开启该Excel工作簿,将会看到工作簿上新生成一张考勤记录表单,这是”考勤记录表”宏程序运行后的结果。续使用窗体——创建自已的对话框窗体是一个对话框,能在VBA中创建并设计,如添加复选框、文本、图片和其它控件对象。窗体可用来与用户进行交互,如传递信息给用户或从用户那里获取信息。例如,当宏正在运行时,可向用户显示一个进度条,代表程序运行进度。对于上一小节中所展示的例子,当你每次打开该工作簿时,都会自动生成一个考勤记录表。如果你一天打开该工作簿五次,将会生成5个考勤记录表。但有时,你不想新生成考勤记录表,因为你原来的考勤记录表还需要补充填写,所以,你应该能对该工作簿进行控制。这时,你可以使用窗体设计一个对话框,当你每次打开该工作簿时,都会出现一个带有选项的对话框,让你选择是否创建新的工作表。■使用窗体创建对话框1.在Excel中,选择菜单“工具——宏——宏”命令,弹出“宏”对话框,在“宏名”文本框中输入“记录表提示”,单击“创建”按钮,打开VBE编辑器;2.在VBE编辑器中,选择菜单“插入——用户窗体”命令,将出现一个带有控件工具箱的窗体,在属性窗口中将名称属性改为“提示”,将Caption(标题)属性改为“是否创建新的考勤记录表?”,输入完成并按Enter键后,窗体标题相应变化。提示在控件工具箱中,当鼠标指针移到某个控件上时,会显示该控件名称。3.在控件工具箱中,单击“标签”控件,然后在“提示