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