Excel VBA 类模块入门
- 格式:doc
- 大小:433.50 KB
- 文档页数:33
Excel-VBA基础入门教案第一章:VBA概述1.1 VBA的概念介绍VBA的定义和作用解释VBA与其他编程语言的区别1.2 VBA的应用场景展示VBA在Excel中的常见应用讨论VBA在提高工作效率方面的优势1.3 VBA的优缺点分析VBA的优势和劣势探讨学习VBA的必要性第二章:VBA环境熟悉2.1 VBA编辑器的打开和使用演示如何打开VBA编辑器介绍VBA编辑器的基本界面和功能2.2 熟悉VBA代码结构解释VBA程序的基本结构介绍模块、过程和函数的概念2.3 编写第一个VBA程序引导学生编写简单的VBA代码解释代码执行过程和结果第三章:VBA语法基础3.1 变量和数据类型介绍VBA中的变量和数据类型演示如何声明和使用变量3.2 运算符和表达式讲解VBA中的运算符和表达式示例说明如何使用运算符进行计算3.3 控制语句介绍VBA中的控制语句演示如何使用条件语句和循环语句第四章:Excel对象和属性4.1 Excel对象模型介绍Excel对象模型和常用对象解释对象之间的关系和层次结构4.2 工作簿和工作表操作讲解如何使用VBA操作工作簿和工作表演示如何创建、删除和选择工作表4.3 单元格和范围操作介绍如何使用VBA操作单元格和范围演示如何设置单元格格式和值第五章:常用VBA函数5.1 常用内部函数介绍VBA内置函数的使用方法示例说明如何使用内置函数进行计算和转换5.2 自定义函数讲解如何创建和使用自定义函数演示如何编写自定义函数代码和调用5.3 函数应用实例提供实际应用场景,引导学生使用函数解决问题第六章:VBA 高级编程6.1 子过程和函数过程解释子过程和函数过程的概念演示如何创建和调用子过程和函数过程6.2 调用其他工作簿中的模块讲解如何调用其他工作簿中的模块示例说明如何实现跨工作簿的数据处理6.3 错误处理和调试介绍VBA中的错误处理和调试方法演示如何使用错误处理和调试工具第七章:用户界面设计7.1 用户界面元素介绍VBA中常用的用户界面元素解释窗体、命令按钮、标签等控件的作用7.2 创建和customize 用户界面演示如何创建和customize 用户界面说明如何设置控件的属性和事件7.3 界面应用实例提供实际应用场景,引导学生使用用户界面解决问题第八章:文件操作8.1 文件读写操作讲解如何使用VBA进行文件读写操作示例说明如何读取和写入文本文件8.2 文件系统对象介绍VBA中的文件系统对象演示如何使用文件系统对象进行文件操作8.3 文件操作应用实例提供实际应用场景,引导学生使用文件操作解决问题第九章:数据访问9.1 数据库连接讲解如何建立数据库连接示例说明如何连接不同类型的数据库9.2 使用ADO对象访问数据介绍ADO对象的使用方法演示如何使用ADO对象访问数据库中的数据9.3 数据访问应用实例提供实际应用场景,引导学生使用数据访问功能解决问题第十章:VBA编程实践10.1 VBA编程技巧解释如何优化代码性能和可维护性10.2 综合实例提供一个综合实例,让学生综合运用所学知识解决问题指导学生如何分析和解决实际问题回顾整个课程的主要内容强调学习VBA的重要性和持续学习的意义重点和难点解析一、VBA的概念与区别重点:VBA的定义、作用以及与其他编程语言的区别。
目录第一章 Excel VBA 简明语言之基础第一节标识符第二节运算符第三节数据类型第四节变量与常量第五节数组使用第六节注释和赋值语句第七节书写规范第八节条件语句第九节循环语句第十节其他类语句和错误语句处理第十一节过程和函数第十二节内部函数第二章 Excel VBA常用对象之使用第一节文件的操作1) Excel文件2) 文本文件3) Access文件4) 文件其它操作第二节工作表操作1) 新建与删除2) 隐藏与显示3) 锁定与保护第三节单元格操作1) 如何引用单元格和区域2) 如何处理单元格和区域3) 单元格和区域的定位 4)单元格和区域的保护与锁定第四节图表的操作1) 新建及类型2) 设置图表的数据3) 图表格式设置4) 散点图增加系列和文字5) 实例第三章 Excel VBA高级使用第一节 Win API的使用1) 堀明API函数2) 使用API函数3) 堀明补充说明4) 实例第二节 Excel VBA程序的保密1) 使用动态连接库DLL2) 获得硬盘物理地址3) 加密与注册第四章 Excel VBA优化及结束语第一节 Excel VBA优化第二节结束语附录I Excel VBA对象框架图第一章 VBA语言基础第一节标识符一.定义标识符是一种标识变量、常量、过程、函数、类等语言构成单位的符号,利用它可以完成对变量、常量、过程、函数、类等的引用。
二.命名规则1)字母打头,由字母、数字和下划线组成,如 A987b_23Abc2)字符长度小于 40,(Excel2002以上中文版等,可以用汉字且长度可达 254个字符)3)不能与 VB保留关键字重名,如 public, private, dim, goto, next, with, integer, single等第二节运算符定义:运算符是代表 VB某种运算功能的符号。
1)赋值运算符=2)数学运算符&、 + (字符连接符 )、 +(加)、-(减)、 Mod(取余)、 \(整除)、*(乘)、/(除)、-(负号)、^(指数)3)逻辑运算符 Not(非)、 And(与)、 Or(或)、 Xor(异或)、 Eqv(相等)、 Imp(隐含)4)关系运算符= (相同)、 <>(不等)、>(大于)、<(小于)、 >=(不小于)、 <=(不大于)、 Like、 Is5)位运算符Not(逻辑非)、 And(逻辑与)、 Or(逻辑或)、 Xor(逻辑异或)、 Eqv(逻辑等)、 Imp(隐含)第三节数据类型VBA共有12种数据类型,具体见下表,此外用户还可以根据以下类型用 Type自定义数据类型。
Excel的VBA编程入门指南Excel是一款广泛应用于数据处理和分析的电子表格软件,而VBA (Visual Basic for Applications)则是Excel的编程语言。
通过VBA编程,用户可以自动化执行各种操作,提高工作效率。
本文将介绍Excel的VBA编程入门指南,帮助读者快速掌握VBA编程的基础知识和技巧。
一、VBA简介VBA是一种事件驱动的编程语言,它运行在Excel等Microsoft Office应用程序中。
通过VBA,用户可以利用Excel的各种对象和方法来操作电子表格,实现自动化处理和数据分析。
VBA与其他编程语言类似,具有变量、条件语句、循环语句等基本语法结构,同时还有特定于Excel的对象模型和属性。
二、VBA的基本语法和结构1. 变量和数据类型:在VBA中,需要声明变量并指定其数据类型。
常见的数据类型包括整数(Integer)、长整数(Long)、单精度浮点数(Single)、双精度浮点数(Double)、字符串(String)等。
变量的赋值使用等号(=)进行。
2. 过程和函数:VBA中的程序由过程(Sub)和函数(Function)组成。
过程是一段执行特定任务的代码块,而函数则是返回一个值的代码块。
使用Sub 关键字定义过程,使用Function关键字定义函数。
例如:```Sub 某个过程()' 代码块End SubFunction 某个函数() As 数据类型' 代码块End Function```3. 条件和循环语句:VBA中的条件语句使用If...Then...Else结构,根据条件的真假执行不同的代码分支。
循环语句可使用For...Next、Do...Loop、While...Wend等结构来实现。
例如:```If 条件 Then' 代码块1Else' 代码块2End IfFor 变量 = 起始值 To 终止值 Step 步长' 代码块Next 变量Do While 条件' 代码块Loop```4. 对象和属性:VBA中的对象是操作Excel电子表格的关键。
excel 2010 vba入门与提高示例一、VBA入门1. 了解VBAVBA(Visual Basic for Applications)是Microsoft Office套件中的一种编程语言,主要用于自动化Microsoft Office系列软件的各种操作。
通过VBA,我们可以编写宏,实现自动化处理,提高工作效率。
2. Excel中的VBA在Excel中,我们可以通过VBA来创建自定义函数、宏、自动化任务等。
使用VBA,我们可以大大提高Excel的使用效率。
二、Excel 2010中的VBA1. VBA编辑器打开Excel,按下Alt+F11键,即可打开VBA编辑器。
在此,我们可以创建新的VBA模块、添加代码等。
2. 创建新模块在VBA编辑器中,选择插入->模块,即可创建一个新的模块。
在此,我们可以编写我们的VBA代码。
三、入门示例以下是一个简单的示例,演示如何使用VBA在Excel中创建一个自定义函数,用于计算平均值。
1. 编写代码以下是一个简单的代码示例:Sub CalculateAverage()Dim rng As RangeDim avg As DoubleSet rng = ThisWorkbook.Sheets("Sheet1").Range("A1:A10") '设置要计算的范围avg = Application.WorksheetFunction.Average(rng) '使用WorksheetFunction中的Average函数计算平均值MsgBox "平均值是 " & avg '显示结果End Sub这段代码定义了一个名为CalculateAverage的子程序,该子程序定义了一个范围(A1到A10),并使用WorksheetFunction的Average 函数计算该范围内的平均值。
Excel中的宏与VBA编程入门教程Excel是一款功能强大的电子表格软件,被广泛应用于数据处理、图表绘制、统计分析等领域。
利用Excel的宏与VBA编程功能,我们可以进一步提高工作效率,实现一些复杂的操作和自动化任务。
本篇文章将为大家介绍Excel中的宏和VBA编程,并提供一个简单的入门教程,帮助读者快速上手。
一、什么是宏?宏是一系列在Excel中执行的操作的记录,可以将一系列常用的操作录制为宏,然后通过一个快捷键或按钮来执行这些操作,从而简化重复的工作步骤。
宏可以帮助我们提高工作效率,减少繁琐的操作,实现自动化处理。
二、如何录制宏?1. 打开Excel,点击“开发工具”选项卡,在工具栏中点击“宏”按钮,或使用快捷键“Alt + F8”打开宏对话框。
2. 在宏对话框中,输入宏名称,如“MyMacro”,然后点击“创建”按钮。
3. 在弹出的“宏录制”对话框中,选择“相对引用”或“绝对引用”,这取决于你需要记录的操作是否与选定的单元格位置有关。
4. 开始录制你的宏,完成一系列的操作步骤,比如输入数据、格式设置、公式计算等。
5. 录制完成后,点击宏对话框中的“停止录制”按钮,宏录制结束。
三、如何运行宏?1. 在Excel中,按下快捷键“Alt + F8”打开宏对话框。
2. 在对话框中选择要运行的宏,如“MyMacro”,然后点击“运行”按钮。
3. Excel将自动执行该宏所记录的操作步骤。
四、VBA编程基础除了录制宏外,我们还可以使用VBA(Visual Basic for Applications)编程语言,进一步扩展和定制Excel的功能。
VBA是一种基于Visual Basic的脚本语言,Excel内置了VBA编辑器,用户可以在其中编写、编辑和运行VBA代码。
1. 打开Excel,在“开发工具”选项卡中点击“Visual Basic”按钮,或使用快捷键“Alt + F11”打开VBA编辑器。
2. 在VBA编辑器中创建一个新的模块,右键点击项目资源管理器中的“模块”,选择“插入”-“模块”。
Excel-VBA基础入门教案第一章:VBA概述1.1 了解VBA的概念解释VBA的含义和作用介绍VBA与其他编程语言的区别1.2 VBA的应用场景展示VBA在Excel中的实际应用案例讨论VBA在提高工作效率方面的优势1.3 VBA的安装和设置指导学生安装VBA宏功能演示如何设置VBA的运行环境第二章:VBA编程基础2.1 VBA编程环境介绍VBA的编程界面和工具栏演示如何新建和使用模块2.2 变量和数据类型讲解变量的概念和作用介绍常用的数据类型及其使用方法2.3 常用操作符和表达式解释算术、比较和逻辑操作符的含义和用法展示如何使用这些操作符进行计算和判断第三章:VBA控制结构3.1 顺序结构讲解顺序结构的含义和作用演示如何使用顺序结构编写简单的宏3.2 选择结构解释选择结构的含义和作用展示如何使用选择结构根据条件执行不同代码块3.3 循环结构讲解循环结构的概念和类型演示如何使用循环结构重复执行代码块第四章:常用VBA函数4.1 数学函数介绍数学函数的作用和用法演示如何使用数学函数进行计算4.2 文本函数讲解文本函数的含义和用途展示如何使用文本函数处理字符串4.3 日期和时间函数解释日期和时间函数的概念和用法演示如何使用日期和时间函数获取当前日期和时间第五章:Excel对象和集合5.1 Excel对象模型介绍Excel对象模型的结构和主要对象演示如何使用对象模型操作Excel对象5.2 工作簿和工作表操作讲解如何创建、打开、关闭和复制工作簿和工作表演示如何使用VBA操作工作簿和工作表5.3 单元格操作解释如何选取、修改和格式化单元格展示如何使用VBA操作单元格数据和格式第六章:VBA代码调试技巧6.1 了解调试工具介绍Excel VBA开发工具栏中的调试工具演示如何使用调试工具进行断点设置、单步执行等操作6.2 使用错误处理结构讲解错误处理结构的概念和用法展示如何使用错误处理结构提高代码的健壮性6.3 常见错误类型及解决方法分析常见的VBA错误类型及其原因提供解决这些错误的常用方法和技巧第七章:用户界面设计7.1 认识用户界面设计解释在VBA中创建用户界面的意义和作用介绍常用的用户界面设计工具和组件7.2 常用用户界面设计组件讲解标签、按钮、文本框等组件的属性和事件演示如何使用这些组件创建个性化的用户界面7.3 界面与代码的交互解释界面组件与VBA代码之间的交互原理展示如何通过用户界面组件控制代码的执行流程第八章:文件操作8.1 文件系统对象(FSO)介绍文件系统对象的概念和主要方法演示如何使用FSO进行文件和目录的操作8.2 文件读写操作讲解在VBA中进行文件读写操作的原理和方法展示如何读取和写入文本文件、Excel文件等8.3 实现文件操作实例提供文件操作的实际案例,让学生学会如何应用所学知识第九章:VBA高级应用9.1 数组和集合讲解数组和集合的概念、作用和用法展示如何使用数组和集合存储和管理大量数据9.2 递归算法解释递归算法的概念和特点演示如何使用递归算法解决实际问题9.3 动态对象创建介绍动态对象的概念和作用展示如何动态创建和使用对象第十章:综合实例开发10.1 实例简介介绍一个综合实例的项目背景和需求分析10.2 需求分析与设计分析项目的需求,设计相应的功能模块10.3 编码实现使用所学的VBA知识,编写代码实现项目功能10.4 测试与优化对项目进行测试,找出并修复可能存在的错误根据测试结果对项目进行性能优化第十一章:Excel Add-In 开发11.1 Add-In 概念介绍解释Add-In 的含义和作用介绍Add-In 的类型及其应用场景11.2 创建和部署Add-In讲解如何创建自定义Add-In演示Add-In 的部署和安装方法11.3 Add-In 高级编程探讨Add-In 的高级编程技巧展示如何扩展Excel 功能和使用体验第十二章:VBA与外部数据交换12.1 了解外部数据交换解释VBA 与外部数据交换的意义和作用介绍常见的外部数据源及其应用场景12.2 使用ADO 连接外部数据讲解ADO (ActiveX Data Objects) 的概念和用法演示如何使用ADO 连接和操作外部数据源12.3 导入和导出数据讲解如何导入和导出数据的方法和技巧展示如何使用VBA 导入和导出Excel 数据第十三章:VBA网络编程基础13.1 网络编程概述解释网络编程的概念和作用介绍网络编程的基本技术和方法13.2 使用WinINet类讲解WinINet 类的作用和用法演示如何使用WinINet 类进行基本的网络操作13.3 实现网络数据获取探讨如何使用VBA 实现网络数据的获取展示如何应用网络编程技术获取网络数据第十四章:VBA安全性和权限管理14.1 了解VBA安全性解释VBA 安全性的概念和重要性介绍VBA 安全性的常见问题和应对策略14.2 宏和VBA代码的安全性讲解如何保护宏和VBA 代码的安全性展示如何防止宏和代码被篡改或滥用14.3 权限管理解释权限管理的概念和作用演示如何实现VBA 代码的权限管理第十五章:VBA编程最佳实践和技巧15.1 编程规范和习惯讲解编程规范和习惯的重要性介绍VBA 编程中的常见规范和习惯15.2 代码优化和重构解释代码优化和重构的概念和作用演示如何进行VBA 代码的优化和重构15.3 高效编程技巧探讨VBA 编程中的高效技巧和策略展示如何提高VBA 代码的执行效率和性能重点和难点解析本文主要介绍了Excel-VBA基础入门的相关知识,涵盖了VBA的概念、应用场景、安装和设置、编程基础、控制结构、常用函数、Excel对象和集合、代码调试技巧、用户界面设计、文件操作、VBA高级应用、综合实例开发、Add-In开发、外部数据交换、网络编程基础、安全性和权限管理以及编程最佳实践和技巧等方面的内容。
VBA中的自定义函数和类模块使用方法自定义函数和类模块是 Visual Basic for Applications (VBA) 中的两个重要概念。
它们让我们能够进一步扩展和自定义 Excel 等 Office 应用程序的功能。
本文将介绍如何在 VBA 中使用自定义函数和类模块。
一、自定义函数自定义函数是一种自定义的 VBA 代码,它接受输入参数并返回结果。
通过创建自定义函数,我们可以在 Excel 的单元格中使用这些函数,以便进行特定的计算、操作和数据处理。
1. 创建自定义函数在 VBA 编辑器中,我们可以通过以下步骤创建自定义函数:1. 打开 Excel 并按下 "ALT + F11" 组合键,以打开 VBA 编辑器。
2. 在 VBA 编辑器中,选择所需的工作簿,然后插入一个新的模块。
3. 在模块中编写自定义函数的 VBA 代码。
例如,以下是一个简单的自定义函数,用于计算两个数的和:```vbaFunction Sum(a As Double, b As Double) As DoubleSum = a + bEnd Function```2. 使用自定义函数使用自定义函数时,我们可以在 Excel 的单元格中直接调用它们,就像使用内置函数一样。
在需要的单元格中输入函数名和参数,然后按下回车键即可看到结果。
例如,如果我们在单元格A1中输入"=Sum(1, 2)",按下回车键后,A1的值将变为3,表示1和2的和。
二、类模块类模块是VBA中用于创建自定义对象的模块。
它可以用来定义属于特定类的属性和方法,进一步扩展 VBA 的能力。
通过类模块,我们可以创建属于自己的对象,实现更复杂的逻辑和操作。
1. 创建类模块要创建类模块,请遵循以下步骤:1. 打开 Excel 并按下 "ALT + F11" 组合键,以打开 VBA 编辑器。
2. 在 VBA 编辑器中,选择所需的工作簿,然后插入一个新的类模块。
VBA类模块完全教程VBA是Visual Basic for Applications的缩写,它是微软Office 套件中的一种宏语言,用于编写自定义的程序代码来自动化和扩展Office应用程序的功能。
VBA可以在Excel、Word、PowerPoint等应用中使用,可以通过创建类模块来组织和管理VBA代码,使其更具结构和可维护性。
本文将介绍VBA类模块的基本概念和用法。
1.什么是类模块:类模块是VBA中的一种特殊模块,它允许我们定义和管理自定义的对象类型。
一个类模块可以包含变量和过程(即子程序和函数),并可以通过实例化(创建对象)来使用。
类模块提供了面向对象编程的基本功能,允许我们通过封装数据和操作来创建更加可靠和可扩展的代码。
2.如何创建类模块:3.类的属性和方法:类模块可以包含属性和方法来定义对象的数据和操作。
类的属性是对象的特征或状态,可以是公共(Public)或私有(Private)的。
类的方法是对象的行为或操作,可以是公共或私有的。
4.类的初始化器和析构器:类模块中可以有一个特殊的过程叫做“Class_Initialize”,它在对象被创建时自动调用,用于初始化类的属性。
类模块中也可以定义一个特殊的过程叫做“Class_Terminate”,它在对象被销毁时自动调用,用于清理资源。
5.类的实例化和使用:通过使用“New”关键字,我们可以实例化一个类并创建一个对象。
然后,我们可以使用对象的属性和方法来访问和操作对象的数据和行为。
6.类的继承:VBA中的类也支持继承关系,即一个类可以从另一个类派生出来,从而继承了父类的属性和方法。
通过使用关键字“Implements”和“Class_Initialize”过程,我们可以实现类的继承。
7.类模块的应用:类模块在VBA开发中有广泛的应用,可以用于创建自定义的对象类型,封装复杂的数据结构和算法,实现复杂的业务逻辑等。
通过使用类模块,我们可以提高代码的可读性和可维护性,减少重复代码的编写。
VBA编程入门Excel中VBA的基本语法和实践VBA编程入门:Excel中VBA的基本语法和实践Excel中的VBA(Visual Basic for Applications)是一种强大的编程语言,它允许用户通过编写宏来自动化和扩展Excel功能。
在本文中,将介绍VBA的基本语法和实践,帮助读者入门并开始使用VBA编程。
1. VBA概述VBA是一种基于事件驱动的编程语言,它可以访问Excel的对象模型并控制Excel应用程序的行为。
通过使用VBA,用户可以编写自定义函数、子程序和事件处理程序来实现特定的功能需求。
2. VBA的开启和编写要开始编写VBA代码,首先需要在Excel中开启"开发者"选项卡。
可以通过依次点击"文件" > "选项" > "自定义功能区" > "主选项卡" > "开发者"来启用此选项卡。
在"开发者"选项卡中,可以找到"Visual Basic"按钮,点击即可打开VBA编辑器。
3. VBA编程基础在VBA编辑器中,可以编写VBA代码。
以下为一些基本的VBA语法:(1) 注释:使用单引号(')来添加注释,以便于代码的可读性和理解。
注释的内容对代码的执行没有影响,它只是解释代码的作用和用法。
示例:'这是一条注释,用于说明代码的作用(2) 变量:使用关键字"Dim"来声明变量,"As"关键字指定变量的数据类型。
示例:Dim myVariable As Integer '声明一个整型变量(3) 条件语句:使用"IF...THEN...ELSE"语句来进行条件判断。
根据条件的真假执行不同的代码块。
示例:If condition Then'执行代码块AElse'执行代码块BEnd If(4) 循环语句:循环语句允许重复执行一段代码,以实现特定的目标。
Excel VBA类模块入门教程示例一示例二集合示例VBA类:隐者的秘密前言写下这个题目,可能会让很多朋友疑惑,笔者先埋下一个关子,很快我会让您知道这个标题的寓意。
这份礼物送给现在想学习类知识或曾经学过但因为各种原因没有“修成正果”的朋友,我期望的结果是这篇文章后,您可以在类模块中像在标准模块中写代码一样熟练,我也期望不至于太乏味而使您没有耐心看完整篇文章,或者说期望您学习的过程是轻松愉悦的,但愿我可以做到。
文章构划为8部分:1.什么是类2.为什么要学习类3.类的预备知识4.创建类属性5.创建类方法6.创建类事件7.一个完整的类实例8.未完的结尾什么是类在我们身边,相同或相似的物品无处不在,从生活用品,到工业产品,……通常它们都是由同一个可以称为“模具”的东西生产出来。
理解类,一般要先从对象谈起,但由于从不同的角度,有不同的理解,从而也有不同的关于类的定义,本文不去探讨一个完整并且公认的类概念,在这一部分后,只要你有一个基本的判断并且在遇到时知道是类就可以了。
在上面的这个例子中,一个“模具”就是一个“类”,而由它生产出的每一个产品,就是一个“对象”。
看下面的VBA语句:Dim tx1 As Textbox不用解释它的意思吧,这里我们用到一个类Textbox定义了一个对象tx1,再来看:Dim tx1 As TextboxDim tx2 As Textbox又定义了一个对象tx2,如果你不嫌烦,我还可以继续下去。
对象增加了,但As后的Textbox没有变,它可以无限制的使用下去。
类是一个隐者,上面Textbox是VBA已经给我们准备好的一个类,我们无法知道VBA是怎么准备的(它的真身被隐藏了),但我们可以知道对象tx1怎么用。
VBA把对对象的使用划分为三种,属性、方法和事件(后面预备知识我们再提)。
然而,Textbox是一个类,仍然不是本文要说的类,因为它是VBA已经给我们准备好了的,我们要做的,只是知道如何使用它而已。
本文要介绍的,是利用VBA已经给我们提供的资源,来构建我们自己的类,姑且可称之为自定义类。
这需要在VBE下,通过插入类模块,然后向类模块中写入代码来完成。
这就是你常常听说的类,本文的主题就是这个包含代码的模块!通过这个模块,可以提供给我们一个和V BA提供给我们的诸如Textbox功能性质完全相同的类,然后,再由我们自己象使用Textbox一样使用!类是一个隐者,她把自己藏在所有模块的最后,甚至在多数情况,她从不出场。
现在,她挂着神秘的微笑,向你走来,你要拒绝吗为什么要学习类模块二、类通常被认为是学习VBA的难点之一,之所以如此,因为相对于制造一个标准模块或用户窗体,我们可以找到的类的学习资源少之又少,甚至很多VB的书籍也只有缪缪字语(在后面的预备知识,我们再提另一个重要的原因)。
从技术角度上看,类的构建,不象窗体,VBA的类也不象有些语言提供了可视的设计界面,感性上那样直接,隐者!她是不可视的设计,所有的构建都是通过在类模块中写代码来实现的。
1.学习是一种兴趣的追求俗语云:学的千千万,用的有几何?又曰:书到用时方恨少。
林语堂先生将做学问划分为三重境界,第二重说“为伊消得人憔悴,衣带渐宽终不悔”,大多数朋友,包括本人,都不是专业程序员,学习程序只是一种兴趣和爱好,就好象有人喜欢修炼网游一样,对喜欢程序的人,不断地学习和提高,也是一种追求优秀的态度,并且乐意享受这个追求的过程。
模块、控件、链接库和类构成软件工程开发的四大技术,而类技术是控件和链接库技术的基础,我们不得不学。
2.类有什么用如你前面看到的我们使用Textbox类,类可以创建大量性质相近的对象,减轻我们的程序量,简洁代码并提高效率。
类定义后,在其它模块中使用时,我们就可以暂时忘记或不必考虑它内部复杂的细节,让我们变得轻松,VBA虽然不能真正封装类的形式,但在这里,我们可以封装它的概念。
这并不是类的全部好处,其它的,留着朋友们用的时候慢慢体会吧。
类挂着神秘的微笑,已经走到你的大门口,开门迎接她吧,你还等什么?类的预备知识广义上讲,所有VBA的知识,包括语句、函数以及为我们提供的标准类甚至第三方的资源都可以在类中被使用。
本文无法也不准备逐一探讨,这里只说一些最密切最基本的,但即使这样,笔者仍然不能把这些点的知识都写到,甚至因为对问题解释清晰或符合逻辑的需要,采用非规范的表述,对专门问题的全面理解,请读者注意参考有关标准帮助文档并加以甄别。
1.从构建者的角度理解对象上一回我们提到,类被认为是VBA难点还有一个原因,这就是我们的思想!VBA提供了大量的现成的类,我们几乎不再需要去构建自己的类,这种结果,我们熟练地习惯了从使用者的角度去理解类—的实例:对象,包括它的属性、方法和事件。
但是,现在你还要尝试做一个提供者,这和你作为使用者时的思考方法是完全不同的,甚至是革命性的。
这种角色的转位是痛苦的,它需要你放弃你原本可以自豪地解释出对象以及它的属性、方法、事件的定义,它们原本是如此逻辑地被划分,如此清晰,但现在,类模块中的一切,彼此交织,你会发现它们都模糊了!是需要你忘掉所有固执的“招势”的时候了,当你心中无剑时,转位也就完成了,隐者变得清晰了,她是如此美丽。
且慢,在你完全忘掉前,让我们最后再看一眼它们的样子,呵呵,如果你实在忘不掉,你就提醒一下自己构建者的身份吧。
下面是通常情况下关于对象、属性、方法、事件的基本表述,如果你以前没了解过,则应当找些资料先认真地理解它们,然后再按照上面的提示去做。
对象是由类创建的一个实例,它是类的实体化。
对象的引用和操作被逻辑上划分为不重叠的三个部分:属性是指对象的特性。
以前面的Textbox为例,有长度,高度,框中显示的文字等等。
方法是指对象的某个操作。
如让Textbox成为当前的焦点(即光标移动到它上面)。
事件是指对象对外部动作的响应。
如我们用鼠标点击Textbo x时,会产生一个Click事件,改变它的值,则产生一个Ch ange事件变量的作用域变量因为声明的位置和方式不同,从而有不同的作用域。
作用域是指变量在多大范围内能被代码识别。
可以划分为过程级、模块级和全局变量。
过程级变量在过程中声明,这里过程指的是一个Sub或Fun ction,也包括后面提到到属性过程。
通常用Dim或Static进行声明。
Dim声明的变量,只在该过程执行时存在,过程结束,变量的值也就消失了。
Static声明的变量称为静态变量,这个值在整个程序运行期间都存在。
模块级变量对整个模块的所有过程都有效,但对其它模块不可用。
可以在模块顶部声明。
声明模块级变量用Private关键字和直接使用Dim没有区别。
但推荐使用Private进行声明,因为这样可以方便地与后面的全局变量区分开来。
全局变量是对整个VBA工程的所有过程都有效的变量,使用Public关键字在标准模块的顶部来声明。
在类模块中,对变量作用域的理解要注意下面两点:(a)由于类是生成对象的模具,每生成一个对象,相当于产生了一个副本,这个副本就是对象的“真身”,副本间是相互独立的,从而,模块级的变量只作用于副本自身。
(b)类模块中使用Public关键字,只有当对象变量是这个类的实例时,才能被访问。
过程和函数变量、过程(Sub)、函数(Function)是我们在标准模块中使用的最基本的构件,在类摸块中,它们仍然是最基本和重要的角色。
对于它们,你已经再熟悉不过,之所以前面还要花这么多文字,是为了突出它的重要,也是想让你放松一下,哦,我花了很短的时间已经看了这么多(我也写了这么多!)。
过程和函数并无实质的区别,当需要返回值时,就使用Fun ction,如果不需要返回任何结果,随你的爱好,但这时推荐你使用Sub,因为这样更符合微软的本意。
过程(Sub)、函数(Function)也有作用域,在标准模块中通过使用Private 和Public关键字(可以省略Public关键字,因为它是默认的),可以划分为模块级和全局级,以决定它是在当前的模块有效还是整个工程有效。
同变量一样,在类模块中使用Public关键字,只有当引用对象变量是这个类的实例时,才能被访问通用内部控件Control(s)VBA提供Control类作为一般内部控件类型,当使用Dim Ct As Control声明了一个变量后,就可以将任何控件赋给该变量,而不管具体的类型,因为在类的使用通常是处理大量相近的对象,所以这种特性非常有用。
在实际使用时,我们多是通过容器控件的Controls属性来返回一个Control的集合对象。
Dim Ct As ControlFor Each Ct In Me.ControlsIf TypeName(Ct) = "CommandButton" Then MsgBox Ct. CaptionNext上面这段代码可以遍历窗体的所有控件并报告找到的命令按钮。
集合CollectionCollection是我们在使用类时最常用到的对象。
一个Collecti on对象代表一组相关的项目,虽然它的成员并不被强制要求是同一类型的的,但请记住,这通常并不能给我们带来额外的方便,相反,我们通常是用来收集同一类型的数据。
建立集合的方法和建立其它对象一样,如:Dim col As New Collection集合建立后,可以使用Add方法添加成员,用Remove方法删除成员,用Item方法从集合中返回特定成员。
Private Sub CommandButton1_Click()Dim col As New CollectionDim i%Dim ct As ControlFor Each ct In Me.ControlsIf Left(, 7) = "TextBox" Then col.Add ct Next ctFor i = col.Count To 1 Step -1MsgBox "下面删除成员" & col.Item(i).Namecol.Remove iNext iEnd Sub上面的代码先将窗体上所有的TextBox加入到集合中,然后再删除掉。
Count属性返回集合的成员数量,Remove方法后面的参数是集合成员的索引号。
成员的索引号通常是按照加入的顺序自然编号,从1开始,但可以在加入时使用Add方法的参数进行改变。
Add方法的完整语法是:object.Add item[,key][,before][,after]item 必需的。
任意类型的表达式,指定要添加到集合中的成员。
key 可选的。
唯一字符串表达式,指定可以使用的键字符串,代替位置索引来访问集合中的成员。
before/after 可选的。