您好,欢迎来到榕意旅游网。
搜索
您的当前位置:首页Excel高级应用 VBA电子书

Excel高级应用 VBA电子书

来源:榕意旅游网
第一章:VBA语言基础

第一节:标识符

一、 标志符的定义

标识符是一种标识变量、常量、过程、函数、类等语言构成单位的符号,利用它可以完成对变量、常量、过程、函数、类等的引用。 1.标志符的命名规则

1)由字母开头,后面接字母、数字或下划线组成,如X,Y_1,XT 张三等。

2)字符长度有一定的规定。

3)不能与 VBA的保留字同名,如 public, private, dim, goto, next, with, integer, single等。

第二节: VBA的数据类型

VBA 共有 12 种数据类型,具体见下表,此外用户还可以根据以下类型用 Type语句自定义数据类型。

数据类型 字符串型String 字节型Byte 布尔型Boolean 整数型Integer 长整数型Long 单精度型Single 双精度型Double 日期型Date 货币型Currency 小数点型Decimal 变体型Variant 对象型Object 类型标识符 $ % & ! # @ 字节 字符长度(0-600) 1 2 2 4 4 8 8 8 14 以上任意类型,可变 4

第三节 变量与常量

常量与变量

常量:值固定的量。 变量:值改变的量。 常量

常量包含以下几种常量: 数值常量

数值常量就是数,各种各样的常数。如整型数、长整型数、定点数、浮点数等 字符串常量

用双引号括起来的即为字符串常量,只要加了双引号,即可视为字符串常量。

如“ABC”、“韶关学院”、“123”等 逻辑型常量

逻辑型常量只有两个值:true(逻辑真)和false(逻辑假)。 日期型常量

前后加#号括起来的即为日期型常量。如:#2004-5-13#。 变量

变量的名:通过变量的名来对应此变量、引用此变量。变量名与变量应一一对应。 变量的命名原则

1. 必须以字母、汉字开头的字母、汉字、数字、下划线组成的

字符串,不能在变量名中出现“。”、空格或者!、#、@、$、%、&。

2. 变量名最长为255个字符。

3. 大小写字母同等对待,不能使用系统保留字。 4. 在同一范围内变量名必须是唯一的。

5. 变量名最好能“见名知义”,以提高程序的可读性。 变量的值:变量(变量名)相当于一个容器,则变量的值就等价于容量中所装的东西。

理解:变量的名与变量的值的关系 变量的赋值:相当于给容器装东西。 赋值语句:变量名=表达式

说明:1.左边是变量名,右边为表达式,不能相反,表达式可是变量、常量、表达式、函数等。

2.“=”为赋值符号。

3.语句的功能为把右边表达式的值赋给左边的变量。(相当

于把右边的东西给装入左边的容器。)

例:x=100 y=“你好!” x=y+100-2

特殊的赋值语句:x=x+1

意义:相当于把X的当前值加上1后,再赋给X变量自己,x原

来的值被新值(加1后的新值)所覆盖。其功能为实现X的值加1。 变量的使用

在使用变量时,必须遵循“先声明,后使用”的原则,变量的声明有显式声明、隐式声明。

显示声明格式:

dim 变量名 [as 数据类型]

说明:dim 声明的变量为动态变量,运行该变量所在的过程时,变量产生。过程结束时,变量消失,变量的值也消失。 例1:

Dim a As Integer

a = a + 1 Print a 例2:

总结:一定能区分常量与变量,建立起变量的概念,知道变量名与变量值的关系。

练习:以下哪些是常量,属于哪种常量,哪些是变量? 姓名 、“性别”、Y、true、72.50、#2004-05-14#、 “123” 123、1.223d4、abc。

第四节 VBA的运算符

定义:运算符是代表 VBA 某种运算功能的符号。 1)赋值运算符:“=”。用来给变量或对象的属性赋值。

2)数算符:

^(指数f运算符):用来作指数运算。 -(负号运算): *(乘法运算):

/(浮点除法运算,运算结果带小数):,如 5/2=2.5 \\(整除运算,运算结果不带小数),如 5\\2=2

Mod(取余运算):如 M MOD N 是求M整除N后的余数。如 5 MOD 2 =1。常用来判断数的整除性,如M MOD N=0,则M能被N整除。

+(加): -(减):

以上算术运算符运算的优先级逐级递减! 3)逻辑运算符 Not(逻辑非运算): And(逻辑与运算): or(逻辑或运算) 4)关系运算符

= (相等)、<>(不等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于)

关系运算符常用于表示比较,其结果为一个逻辑值。如果关系表达式成立,则其逻辑值为TRUE,否则为FALSE。

比较规则:

数值型数据:按大小

字符型数据:

单个字符,空格<“A”…“Z”<“a”…“z” 字符串,先比较第一个的大小。 含多种运算符的表达式的综合运算:

当一个表达式出现多种运算符时,其运算顺序为:先数学,后关系,再逻辑。

第五节 VBA的内部函数

函数的格式:函数名(参数)

函数值

内部函数: 1、 数学函数

注意:Sin(X)、Cos(X)、Tan(X)、Atan(x) 三角函数,单位为弧度。

Log(x) 返回 x 的自然对数。 Exp(x)返回 ex Abs(x) 返回绝对值

Int(number)、Fix(number) 都返回参数的整数部分,区别:Int 将 -8.4 转换成 -9,而 Fix 将-8.4 转换成 -8

Sgn(number) 返回一个 Variant (Integer),指出参数的正负号 Sqr(number) 返回一个 Double,指定参数的平方根 Rnd(x)返回 0-1 之间的单精度数据,x 为随机种子

1). 三角函数: Sin(X)、Cos(X)、Tan(X)、Atan(x),其参数为弧度数, 弧度转换为角度的计算公式:(x/180)*3.1415926

2).RND():随机数函数,括号可省。写成rnd。其值的范围为(0,1)。 2、 字符串函数

len():其值为字符串的长度。 例:Len(\"韶关学院\")=4

Len(\"abcdef\")=6

在VBA中采用统一字符编码,一个汉字算一个;一个英文字母也算一个。

left():left(\"韶关学院\",2)=“韶关” right():right(\"韶关学院\“学院” mid():mid(\"韶关学院\,2)=“关学” ltrim():去掉字符串左边多余的空格。 rtrim():去掉字符串右边多余的空格。 trim():去掉字符串左边和右边多余的空格。 解释:

字符串左边多余的空格: “ asd fghj hjk ” 字符串右边多余的空格: string():String(9, \"!\")

space(n):生成由N个空格组成的字符串。 instr(begin,s1,s2):

功能:在母串中查找子串出现的起始位置。如果母串不包含

子串,则函数的值为0。Begin表示在母串中哪个位置开始查找子串。 例:instr(3,“韶关学院”,“学院”) 3、 转换函数

str():数值转换为字符str(123)=“123” val()字符转换为数值 val(“123”)=123 asc():求已知字符的ASC码

chr():已知ASC码,求其所对应的字符。 oct (x):十进制转换为八进制。 hex(x):十进制转换为十六进制。 lcase():转换为小写字符 ucase():转换为大写字符 ccur():类型转换

4、 日期函数

time() timer() now() date() year() month() weekday() day() hour()

minute() second()

在立即窗口中输入函数,求函数的值

? 函数名() 5、 输入输出函数

1. 输入对话框函数inputbox()

格式:变量名=inputbox(提示信息,标题,缺少值,x,y) 功能:在屏幕的x,y位置打开一个输入对话框,对话框的提示信息为括号里的提示信息,对话框的标题为括号中的标题信息。当输入值时,输入的值就会保存在左边的变量中。 例:

aa= InputBox(\"请输入数据\输入数据\",100,123,456) 运行界面如下:

当输入200时,则200就保存在aa变量中,如果没输入,则以缺省值100保存在aa变量中。

2. 输出消息对话框函数msgbox()

变量名=msgbox(提示,按钮,标题)

功能:显示一个消息对话框,提示给用户信息,其中可有若干

个选择按钮和图标。注意:“按钮”设置值及其意义。

5.测试函数(测试函数的返回结果为True或者False)。 IsNumeric(x):测试X是否为数字。 IsDate(x):测试X是否是日期。

IsEmpty(x):测试X是否为 Empty(空值)。 IsArray(x):测试变量是否为一个数组。

第六节 VBA中对象属性方法

一、概念

类:类是对象的抽象,对象是类的实例化、具体化。

对象:对象是类的实例化、具体化。在VBA中,对象也称为控件,出现在集成开发环境中的工具箱中。 VB中的控件 控件的命名和控件值

在VB中,每一个控件都有一个唯一确定的名字,通过名字来对应此控件。

命名的约定:

控件命名原则:通过控件的名字知道控件的类型、控件的的作用。 名字组成:类型符表示控件含义的字符 命名时应遵守的规则:

描述一个对象的三要素:“属性”、“方法”、“事件”。 属性:通过控件的属性来定义控件的外观。 对象属性的描述:

对象名.属性名

对象属性的赋值:

1. 在设计状态,通过属性窗口进行属性值的设定 2. 在运行状态,通过代码动态地改变对象的属性值 格式:对象名.属性名=值

方法:通过控件的方法来定义控件的行为,是一段已经确定好的代码的集合。

方法的调用:对象名.方法名 [参数] 例:

debug.print “您好,欢迎光临!”

事件:事件来定义控件对外部刺激所作的反应。 常见的事件:

click(鼠标单击)、dblclick(鼠标双击) 事件的触发机制:用户触发,系统触发。 事件过程的一般格式: sub 对象名_事件名() 事件响应程序 end sub 说明:

“对象名”是指该对象的name属性的值。

“事件名”是指VAB预先定义好的赋予该对象的事件。 理解事件驱动的含义:

P14页(倒数第四行起) VBA事件程序的执行步骤: 1. 等待事件的发生;

2. 事件发生时,执行其对应的事件过程。 3. 重复步骤1

如此周而复始地执行,直到程序结束。

第二章:VBA基本控制结构

结构化程序设计的三种基本结构:顺序结构、选择结构、循环结构 顺序结构:

执行流程:按语句的先后顺序依次执行。

注意:在顺序结构中,有些语句有严格的先后顺序,编写代码时,须严格遵循它们的先后顺序;有些语句先后顺序无关紧要,则编写代码时,其顺序可不作严格要求。 选择结构:

执行流程:执行到选择结构时,根据选择结构的条件决定程序的执行流程。

选择结构的流程图描述: 选择结构的案例讲述。

1、 编写程序,交换变量A、B的值。(拓展:交换EXCEL工作表中

两个单元格的值)

2、 输入三角的三边,用海仑公式求三角形的面积。 选择结构所对应的语句:

1. 单分支选择语句(If语句)单条件判断 格式1:行 IF 语句 语句:

if 条件 then <语句块1> else <语句块2> 注意:此格式中,语句均须在一行书写。

执行流程: 格式2:

if 条件 then 语句块1 语句块2 endif

注意:书写格式 执行流程 格式3: if 条件1 then 语句块1 else if 条件2 语句块2 else if条件3 语句块3 …… …… Endif

注意:书写格式,多条件判断。 执行流程

例1:比较A、B两个变量值的大小。并输出较大的变量名及其值。

算法(文字描述):

1. 定义A、B两变量。 2. 输入A、B的值 3. 比较A、B值的大小

4. 如A>=B,则输出“A较大”和A的值,程序结束。 5. 如Aa=inputbox(“请输入A:”)

b=inputbox(“请输入B”) If a>=b then

Debug.print “A 较大!”,a else

debug.print “B 较大!”,b endif

或用行IF语句,则其格式为

If a>=b then debug.print “A 较大!”,a else debug.print “B 较大!”,b 选择结构的嵌套

概念:在一个IF结构中出现另一个IF结构,就叫做选择结构的嵌套 格式: if 条件 then

if 条件 then

语句 else 语句 endif else

if 条件 then 语句 else 语句 endif endif

注意:if、Else、Endif总是与离它最近的配对。

例2:比较A、B、C三个变量值的大小。并输出较大的变量名及其值。 算法(文字描述):

1. 定义A、B、C三个变量。 2. 输入A、B、C的值。 3. 先比较AB的大小

4. 如果A>=B 成立,则比较AC,如A>=C,则A大,否则C大。 5. 如果A>=B不成立,则比较BC,如B>=C,则B大,否则C大。 6. 程序结束。 程序代码:

Dim a As Single, b As Single, c As Single

a = InputBox(\"请输入A的值:\") b = InputBox(\"请输入B的值:\") c = InputBox(\"请输入C的值:\") If a >= b Then If a >= c Then

Debug.Print \"A较大!\ Else

Debug.Print \"C较大!\ End If Else

If b >= c Then

Debug.Print \"B较大!\ Else

Debug.Print \"C较大!\ End If End If

例3:输入三角形的三边,判断其值的有效性,并求出有效三角形的面积。

文字算法:(学生自己写出) 流程图:(学生自己绘制) 程序代码:

Dim a As Single, b As Single, c As Single, l As Single, s As Single

a = InputBox(\"请输入三角形A边的值:\") b = InputBox(\"请输入三角形B边的值:\") c = InputBox(\"请输入三角形C边的值:\") If a + b > c And a + c > b And b + c > a Then l = (a + b + c) / 2

s = Sqr(l * (l - a) * (l - b) * (l - c)) msgbox \"所求的三角形面积:\" & s Else

MsgBox (\"数据输入出错,三边不能构成三角形!\") End If

多条件判断一(用IF语句)

if 条件1 then 语句块1 elseif 条件2 语句块2 elseif条件3 语句块3 …… …… Endif

注意: 1:格式。

2:执行流程

案例:输入某学生的成绩,判断其等级。其等级标准为:90-100:“优秀”;80-:“良好”;70-79:“中等”;60-69:“及格”,60分以下:“不及格” 算法:(略) 代码: Sub judge( )

Dim score As Single

Score=inputbox(“请输入成绩:”) If score < 60 Then

Msgbox \"注意!你的成绩为不及格!\" ElseIf score > 60 And score < 70 Then Msgbox \"你的成绩为及格,需努力!\" ElseIf score > 70 And score < 80 Then Msgbox \"你的成绩为中等,再努力!\" ElseIf score > 80 And score < 90 Then Msgbox \"你的成绩为良好,争取优秀!\" ElseIf score > 90 And score < 100 Then Msgbox \"你的成绩为优秀,祝贺你!\" Else

Msgbox \"你的输入有问题!\"

End If End Sub

多条件判断二

情况选择语句,也用于多分支选择 格式:

select case 表达式 case 表达式1 语句块1 case 表达式2 语句块2 …… case else 语句块N End Select 注意:1:格式

2:执行流程

3:测试表达式的几种形式 a.表达式, 表达式 b.表达式 to 表达式

c.is 关系运算表达式,使用的运算符包括: <、<=、>、>=、<>、= 例: case 1 to 10

测试变量的值落在1到10的范围内,则匹配,符合条件。

case 1 to 5,12

测试变量的值落在1到5的范围内,或者12,则匹配。

case “Xie”,“Li”to Wang”

测试变量的值落为“Xie”,或者落在“Li”到“Wang”的范围内,则匹配。

例:用select语句改写多条件的if语句.

案例:编写程序,要求:输入二元一次方程AX+BX+C=0的系数A、B、C后,判断其解的情况并求其解。

2

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- nryq.cn 版权所有 赣ICP备2024042798号-6

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务