Excle 2007 VBA 参考大全——第一章Excle VBA基础
发布日期:2022-02-26 14:49:41 浏览次数:52 分类:技术文章

本文共 5133 字,大约阅读时间需要 17 分钟。

Ⅰ.内容提要

本书共27章及三个附录,大致分为三个部分。通过内容提要我们可以很清楚的看到VBA编程的关键是Excle对象模型

部分 章节 内容
第1章(基础知识) 介绍了vba编程和excle对象模型的基础知识 ——介绍了VBA语言及其特征,阐明了集合、对象、属性、方法和事件的关系,并展示了如何通过对象模型将这些概念与Excle产生联系
第2—27章 (使用特定对象) 1. 通过大量实例介绍了excle关键对象
2.介绍了新的XML文件格式和RibbonX开发技术
3.介绍了为提取各种格式的数据而访问外部数据库的详细技术
4.最后四章探讨了将Excle链接到Internet、为国际兼容性编写代码、VBE编程及如何使用Win32API函数等高级话题
附录(对象模型参考) 提供了Excle2007对象模型以及VBE和Office对象模型的所有对象,并包括相应的所有属性、方法和事件以及相关示例。

相关网站第V页

 

Ⅱ.第一章 Excle VBA基础

本章主要讲了如下内容一.Excle宏录制器二.用户自定义函数三.Excle对象模型四.VBA编程概念

一.Excle宏录制器

1.个人宏工作簿——如果选择在个人宏工作簿里存储录制的宏,那么该宏将被添加到名为 Personal.xlsb的特定文件中。该文件是当关闭 Excel时保存在 Excel启动目录里的一个隐藏文件,这意味着启动 Excel时会自动装载Personal.xlsb文件,因此,该文件中的宏总是可以为其他的工作簿使用

2.如果不同表存在相同快捷键的宏,按宏名的字母顺序优先运行

3.绝对录制与相对录制——绝对录制锁定你所录制的单元格,相对录制则你当前选中哪个单元格就从那里开始(相对录制时从左上角开始选择,从左到右,否则会出错。这是所有版本的Excle VBA中存在的问题)

4.Visual Basic编辑器(VBE)

相关概念 划分及解释
代码模块(所有宏都驻留在代码模块里,每个模块可以包括许多宏) 1.标准模块
2.类模块
过程(VBA中,宏被称为过程) 1.子过程——宏录制器只能生成子过程,以关键字Sub开始,End Sub结束
2.函数过程
工程资源管理器 显示所有已打开的工程以及这些工程的组成要素
属性窗口 选中属性然后F1键可获取帮助

5.事件过程——事件过程是特别的宏过程,响应在Excel里发生的事件。

二.用户自定义函数(UDF)

VBA里使用excle函数————WorksheetFunction.函数名(可用Application代替WorksheetFunction

UDF不能做什么——不能改变工作表结构

1.使用在工作表单元格中的UDF不允许改变工作表的结构,这就意味着UDF不能对任何其他的单元格返回其正在使用的值,也不能改变单元格的物理属性,例如字体颜色或背景图案.2.UDF无法执行诸如复制或移动工作表单元格这样的操作,也不能执行某些包含光标位置变化的动作,例如“编辑”→“查找”。3.一个UDF能够调用另一个函数过程,甚至是子过程,但是该过程与UDF所受到的限制相同,仍然不允许改变工作表的结构

三.Excel对象模型

对象模型——每个应用程序都有一组明确定义的对象,这些对象经由彼此的关系被组织在一起。这种结构被称作应用程序的对象模型。

Microsoft Office相关对象

Word 涉及文档、段落和词
Access 数据库、记录词和字段
Excle 涉及工作簿、工作表和单元格区域

相关概念

在这里插入图片描述

名称 概念或释义 使用格式
集合 对象从属于集合,集合本身也是对象,该对象包含其他紧密相关的对象 在这里插入图片描述
属性 属性是对象的自然特征,可以被度量或量化 在这里插入图片描述在这里插入图片描述(不过我去掉提供给单元格一种数值格式之后也能显示)
方法 是对象或在对象中可以执行的动作 在这里插入图片描述
事件 VBA里的一个重要概念是对象能够响应事件 在这里插入图片描述

四.VBA语言

本章介绍内容

  • 在变量和数组里存储信息
  • 在代码里做出判断
  • 使用循环
  • 基本的错误处理

1.基本的输入和输出——以MsgBox和InputBox函数为例

1.1MsgBox在这里插入图片描述方括号里的参数是可选的,有两种办法指定参数

1.通过位置指定参数 通过位置指定一个参数,则需要保证按正确顺序输入,即为中间省略的参数保留额外的逗号
2.通过名称指定参数 在这里插入图片描述

1.2常量——是一种特殊类型的变量,其值不会发生改变。可用于包含关键的数据,或编写更易于理解的代码,VBA有许多内置常量,他们被称为**固有常量**

1.3返回值——通常的规则是,如果希望获取函数的返回值,需要在括号里放置所有的参数。如无需使用返回值,则不应该使用括号。

在这里插入图片描述

1.4InputBox——获取输入的文本形式数据

2.调用函数和子过程

2.1注意,从其他过程调用的子过程可与函数过程一样接受输入参数。不能直接运行一个带有输入参数的子过程。(子过程不会产生一个返回值,所以调用时不用括号括起)在这里插入图片描述

3.括号和参数列表

3.1

在这里插入图片描述
3.2引用参数列表里的对象时,在括号中放置一个对象引用将使VBA把对象引用转换为对象的默认属性,如(Range(“A1”))被转化为单元格的值,而非对Range对象的引用
3.3使用Call语句(使用范围有限,不能处理返回值。所以一般不用它)
如果使用Call语句,则必须在传递给被调用过程的参数两边放置括号:
Call PostInput(SalesData, "B3)

4.变量

4.1变量声明

VBA支持两种类型的变量声明,隐式变量声明显式变量声明
显式声明——Dim语句

强制变量声明——模块最顶部的声明部分,所有过程之前放置语句Option Explicit(仅用于其出现处的模块,其他模块需在声明部分重复该语句)

在这里插入图片描述
4.2变量的作用域和生存期

名称 概念 分类
作用域 定义可以使用变量的过程 1.过程级变量——在一个过程里声明的变量(作用域在过程中
2.模块级变量——在模块的声明部分声明的变量(作用域在整个模块
生存期 定义变量值保存的时间 1.在过程中声明的变量生存期是该过程运行期间,仅保留在内存中。过程结束就被释放
2.通过在变量前加Static,可将变量生存期延长到工作簿打开期间

4.3变量类型

VBA不强制声明变量类型,但是如果声明的话。代码将更有效率
如果不声明变量类型,则默认为Variant类型,此类型要比其他类型更占用内存。所以为了代码运行效率,应指定数据类型
在这里插入图片描述

声明类型 单个 多个
变量 Dim Sales As Double Dim Salesdata As Double, Index As Integer, Startdate As Date
函数和参数类型 Function IsHoliday(whichDay As Date) 1.Sub Marine(Crewsize As Integer, Fuelcapacity As Double)
2.也可以为函数声明返回值的类型,下面的示例代表返回值为True或 False的函数Function Isholiday(Whichday As Date) As Boolean
常量 Const Version As String = " Release 3 . 9a" 如果希望某常量对所有模块可用,则声明为Public。 Public Const error666 As String=“您不能执行该操作”

命名规则——一般把类型头一个字母小写放在变量名称前

5.判断

两种主要结构——IF和Select Case

IF语句更为灵活,而Select Case在判断单个的变量时更好
1.IF语句

1.IIF函数 IIF(逻辑判断,为真时执行的表达式,判断结果为假时表达式) 1.IIF函数第三个参数必须被定义,而if语句则可忽略Else语句
2.IIF函数只能给单个变量返回值,而单行的IF语句能给多个变量赋值
2.IF结构 IF 逻辑判断 Then 为真时执行 ElseIf(可跟多个) Else 为假时执行 End IF(结束IF) 当IF结构中含有一个或多个 Elself判断时,VBA将一直判断直至找到结果为True的部分,执行该部分的代码,之后直接进入 End If后面的语句。如果判断的结果都不为True,则执行Else部分的语句

2.Select Case语句

在这里插入图片描述
在这里插入图片描述

6.循环

VBA提供两种结构Do…Loop循环和For…Next循环

Do…Loop循环适用于当逻辑条件满足时终止循环的情形,例如到达数据的结尾。For…Next循环适用于可提前预知循环次数的情形,例如希望为部门里的10个人输入经费时。For…Next循环在VBA中也有一个有趣的变形,即 For Each…Next循环,用于处理集合中的所有对象。例如,可使用该循环处理区域内的所有单元格或者工作簿中的所有工作表

6.1Do…Loop循环

在这里插入图片描述
IsEmpty函数是判断单元格是否为空的最好方法,使用="",对于计算为零长度字符串的公式,判断的结果为true

6.2For…Next循环

与DO…Loop的不同——a.他有一个内置的计数器,在每次执行完之后自动增加,循环的终止条件是计数器超过预设值,而非根据用户指定的逻辑判断结果。
在这里插入图片描述
6.3For Each…Next循环
当需要处理集合中每一个成员时,可使用此循环。
在这里插入图片描述

7.数组

7.1概念

概念 定义 说明
数组 数组是可以包含一个以上数据项的VBA变量,通过在名称后面包含括号声明数组。在括号里放置整数,定义数组中元素的个数:Dim avData(2) 通过指定元素数值给数组元素赋值:avData(0)=1
多维数组 实际可以定义多达60维的数组:Dim avData(10,20)
Dim avData(1 TO 10,1 TO 20)【上述定义了一个10行20列的表】
动态数组 通过忽略数组维数声明一个动态数组:Dim avData()
可以在运行时使用 Redim语句声明所需的大小,因而可以使用变量定义索引值的范围:ReDim avData(irows, iColumns)
Redim avData(iminRow To imaxRow, iminCol To imaxCol)
基数 数组中的元素数取决于数组的基数。默认的基数是0,意味着第一个数据元素是项目0。如果基数为0,则 Dim avdata(2)声明了一个含有三个元素的数组。
也可以将下面的语句放置在模块顶部的声明部分,声明数组基数以1开始:Option Base 1基数以1开始时, Dim avdata(2)声明一个含有2个元素的数组。项目0不存在

7.2相关函数

a.LBound(下限)函数和UBound(上限)函数;固有常量vbcr(代表一个回车换行符。用于打断消息文本到新的一行)在这里插入图片描述
动态数组在这里插入图片描述

8.运行时错误处理

8.1概念

语句 说明
On Error GoTo (LineLabe) Linelabel是在正常的代码末尾插入的标签,如下面的代码所示,用到了行标签 errTrap。注意,行标签后面紧接着一个冒号(😃。行标签标志着错误恢复代码的开始,应在它之前放置一个Exit语句,避免没有错误发生时执行错误恢复代码。
一旦 On Error语句被执行,就启用了错误捕获。如果错误发生,不会显示任何消息,并执行行标签后面的代码。可使用Err对象获取错误信息。Err对象的 Number属性返回错误号, Description属性返回相关的报错消息。可使用Err. Number确定错误,也可将相应的Err. Description纳入自己的报错消息中。
On Error Resume (Next) Resume语句表现为3种形式:
1. Resume执行导致错误的语句
2.Resume Next返回导致错误语句的下一条语句并执行该语句,从而跳过了有问题的语句
3.Resume Linelabel跳转到代码中指定的行标签处,选择从何处恢复执行。
该语句导致错误被忽略,因此应该谨慎使用
On Error GoTo 0 此语句用于再次打开正常的VBA错误处理。否则,将忽略更多的错误。

五.书籍本章总结

在这里插入图片描述

Ⅲ.总结

以前看过学习方面的书,在本章的学习操作中发现一些问题,如在无意中就变成了对书的摘抄,一点概念体系,知识架构都组织不起来。这不是一次有效的学习。所以我准备下一篇博客要专门就学习流程、学习方式进行总结规范,将有关学习的知识运用起来。提高效率

转载地址:https://blog.csdn.net/qq_31972823/article/details/105783386 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Sql常用语法
下一篇:有点变化

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年04月18日 19时40分39秒