36
Excel VBA 程程程程 第 2 第 VBA 第第第第

Excel VBA 程序设计

  • Upload
    lynton

  • View
    79

  • Download
    5

Embed Size (px)

DESCRIPTION

Excel VBA 程序设计. 第 2 章 VBA 基础知识. VBA 字符集. 大小英文字母: A~Z 、 a~z 。 不区分大小写 数字: 0~9 。 特殊符号: + - * / \ ^ = < > = & 等运算符及一些标点符号。 汉字. VBA 关键字. VBA 中的关键字很多,如:数组、编译命令、控制流、变换、数据类型、日前与时间、目录和文件、错误、金融、输入与输出、数学、其他、操作符、字符串处理、变量与常量等。 - PowerPoint PPT Presentation

Citation preview

Page 1: Excel VBA 程序设计

Excel VBA 程序设计第 2 章 VBA 基础知识

Page 2: Excel VBA 程序设计

2

大小英文字母: A~Z 、 a~z 。不区分大小写数字: 0~9 。特殊符号: + - * / \ ^ = <> < > <= >= & 等

运算符及一些标点符号。汉字

VBA 字符集

Page 3: Excel VBA 程序设计

3

VBA 中的关键字很多,如:数组、编译命令、控制流、变换、数据类型、日前与时间、目录和文件、错误、金融、输入与输出、数学、其他、操作符、字符串处理、变量与常量等。

如:Const 、 As 、 Dim 、 Boolean 、 Integer 、 Date、 Double 、 Do 、、 Else 、 End 、 For 、 If 、 Is 、 Loop 、 Next 、 String 、 Sub 、 Then 、 While 、 With 、 Call

VBA 关键字

Page 4: Excel VBA 程序设计

4

标识符的命名规则首字符必须为字母或汉字不能出现空格 . ! @ & $ # 等字符不能与关键字(及一些有特定含义的单词)同名不能超过 255 个字符

VBA 标识符

Page 5: Excel VBA 程序设计

5

一行可以书写多条语句,各语句之间以冒号:分隔一条语句可以多行书写,以空格加下划线 _ 来续行单词之间以空格分隔尽量使用缩进格式,以增加程序的可读性养成使用注释的习惯

书写规范

Page 6: Excel VBA 程序设计

6

直接常量数值常量,如: 120 、 2.65

字符串常量,如“ Excel” 、 “武大 120”

逻辑常量: True 、 False

日期常量,如: #9/28/2013#

符号常量

VBA 中的常量

Page 7: Excel VBA 程序设计

7

直接常量符号常量

系统内部常量用户自定义常量

Const 标识符 As 数据类型 = 表达式【例】 Const myNumbe rAs Integer = 5

Const myFruit As String = " Apple"

VBA 中的常量

Page 8: Excel VBA 程序设计

8

声明变量用 Dim 声明变量用 Private 声明变量用 Public 声明变量用 Static 声明变量

VBA 中的变量

Dim 标识符列表 [As 数据类型 ]

【例】 Dim Flag As Integer, StName As String

Dim StNum As String

Page 9: Excel VBA 程序设计

9

声明变量隐式声明强制显式声明在声明字段加上语句: Option Explicit

VBA 中的变量

Page 10: Excel VBA 程序设计

10

数据类型 关键字 字节数 备注

布尔型 Boolean 2 True 或 False

字节型 Byte 1 0~255

整型 Integer 2 -32768~32767

长整型 Long 4 -2147483648~-2147483647

货币型 Currency 8

单精度浮点型 Single 4 10-38 ~ 10+38

双精度浮点型 Double 8 10-308 ~ 10+308

小数型 Decimal 12

日期型 Date 8

字符串型 String

对象型 Object 4

变体型 Variant

用户自定义

VBA 的数据类型

Page 11: Excel VBA 程序设计

11

VBA 的数据类型

数组类型声明固定大小的数组Dim 数组名 ( 数组上界 ) As 数据类型Dim 数组名 ( 第 1 维上界 , 第 2 维上界 ,…) As 数据类型声明动态数组Dim 数组名 ( ) As 数据类型ReDim [Preserve] 数组名 ( 下标 )

Page 12: Excel VBA 程序设计

12

VBA 运算符与表达式

算术运算符比较运算符逻辑运算符字符串连接运算符

Page 13: Excel VBA 程序设计

13

VBA 运算符与表达式

算术运算符

运算符号 优先级 作 用^ 1 指数运算- 2 取负运算

* 、 / 3 乘法、除法运算\ 4 取商运算

Mod 5 求余运算

+ 、 - 6 加法、减法运算

Page 14: Excel VBA 程序设计

14

VBA 运算符与表达式

字符串连接运算符

运算符号 作用+ 连接两个操作数都是字符串的情况& 将两个操作数强制为字符串连接起来

Page 15: Excel VBA 程序设计

15

VBA 运算符与表达式

比较运算符

比较运算符的优先级相同

运算符号 作用= 等于

<> 不等于< 小于> 大于

<= 小于等于>= 大于等于

Page 16: Excel VBA 程序设计

16

VBA 运算符与表达式

逻辑运算符

运算符号 优先级 作用Not 1 取反运算And 2 逻辑与运算Or 3 逻辑或运算

Xor 4 逻辑异或运算Eqv 5 逻辑相等运算Imp 6 逻辑蕴涵运算

Page 17: Excel VBA 程序设计

17

VBA 运算符与表达式

逻辑运算符

操作数A

操作数B

Not A A And B A Or B

F F T F F

F T T F T

T F F F T

T T F T T

Page 18: Excel VBA 程序设计

18

VBA 运算符与表达式

比较运算符

运算符号 作用Is 比较两个对象的引用变量

Like 用于比较两个字符串

Page 19: Excel VBA 程序设计

19

VBA 运算符与表达式

运算符的优先级在表达式中,当运算符不止一种时,要先处理算术运

算符,接着处理比较运算符,然后再处理逻辑运算符。所有比较运算符的优先顺序都相同;也就是说,要按它们出现的顺序从左到右进行处理。而算术运算符和逻辑运算符则必须按下列优先顺序进行处理。

字符连接运算符( & )在算术运算符之后,比较运算符之前

Page 20: Excel VBA 程序设计

20

VBA 流程控制

顺序结构选择结构循环结构

Page 21: Excel VBA 程序设计

21

VBA 流程控制

选择结构单分支

If 条件表达式 Then

语句组End If

表达式

语句

Y N

Page 22: Excel VBA 程序设计

22

VBA 流程控制

选择结构双分支

If 条件表达式 Then

语句组 1

Else

语句组 2

End If

表达式N

语句组 2语句组 1

Y

Page 23: Excel VBA 程序设计

23

VBA 流程控制

选择结构多分支

If 条件表达式 1 Then语句组 1

ElseIf 条件表达式 2 Then语句组 2

……Else

语句组 nEnd If

表达式 1

表达式 2

表达式 3

表达式 n-1

语句组 n语句组 n-1

...

语句组 3语句组 2语句组 1 ...

真 真 真 真

Page 24: Excel VBA 程序设计

24

VBA 流程控制

选择结构多分支

Select Case 语句

Page 25: Excel VBA 程序设计

25

VBA 流程控制

顺序结构选择结构循环结构

Page 26: Excel VBA 程序设计

26

VBA 流程控制

循环结构Do…LoopFor…NextFor Each…Next

Page 27: Excel VBA 程序设计

27

VBA 流程控制

With 语句在一个单一对象上执行一系列的语句。语法With object

[statements]

End With

Page 28: Excel VBA 程序设计

28

VBA 过程

过程是模块中最小的单元,通常用于完成某个相对独立的功能。

Sub 过程没有任何返回值的一段程序。在 VBA 中响应事件的代

码块都是 Sub 过程。Call 语句用来条用过程。Function 过程(函数)用于建立用户自定义函数,可以有一个返回值。调用方法与 Excel 内部函数调用方法一致。

Page 29: Excel VBA 程序设计

函数名 函数值类型 功能 示 例 返回值Abs(N) 与 N 相同 返回 N 的绝对值 Abs(-4*4) 16

Cos(N) Double 返回 N 的余弦值 Cos(0) 1

Exp(N) Double 返回 eN 的指数值 Exp(1) 2.71828182

Fix(N) Double 去掉小数点取整 Fix(5.78)Fix(-5.78)

5-5

Int(N) Double 返回不大于 N 的最大整数

Int(5.78)Int(-5.78)

5-6

常用内部函数

数学函数

Page 30: Excel VBA 程序设计

函数名 函数值类型 功能 示 例 返回值Trim(S) String 去掉 S 左右两边

空格字符Trim(“ 人 ” ) “人”

LTrim(S) String 去掉 S 左边空格字符

LTrim(“ 人” ) “人”

RTrim(S) String 去掉 S 右边空格字符

RTrim(“人 ” ) “人”

Left(S,N) String 从 S 左边截取 N个字符

Left(“Hello”,2) “He”

Rigth(S,N)

String 从 S 右边截取 N个字符

Rigth(“Hello”,2) “lo”

Len(S) Integer 测试 S 的字符个数

Len(“ 中国 -China”)

8

常用内部函数

字符串函数

Page 31: Excel VBA 程序设计

函数名 函数值类型 功能 示 例 返回值Mid(S,N1

[,N2])String 从 S 中第 N1 个

字符开始截取 N2个字符

Mid(“Computer”,4,3)

Mid(“Computer”,4)

“put” “puter”

Space(N) String 产生 N 个空格字符

“ 中” +Space(2)+”国”

“ 中 国”

Ucase(S) String 将 S 的小写字母改为大写

Ucase(“Visual”) “VISUAL”

Lcase(S) String 将 S 的大写字母改为小写

Lcase(“Visual”) “visual”

String(N,S)

String 重复输出 N 个 S字符

String(5,”*”) “*****”

常用内部函数

字符串函数

Page 32: Excel VBA 程序设计

函数名 函数值类型 功能 示 例 返回值Asc(S) Integer 给出 S 首字符的

ASCII码值Asc(“ASDC”) 65

Chr(N) String 给出 ASCII码值是 N 的字符

Chr(97) “a”

Str(N) String 将数字 N转换为字符型

Str(-234) “-234”

Val(S) Double 将数字字符串转换为数字

Val(“-234”)Val(“12AB”)

-23412

CDate(s) Date 将 S转为日期型表达式

CDate(“3-15-2011”)

2011-3-15

常用内部函数

转换函数

Page 33: Excel VBA 程序设计

函数名 函数值类型 功能 示 例 返回值Day(D|S) Integer 返回月中第几天

( 1~31 )Day(“2002-5-20”) 20

Month(D|S)

Integer 返回一年中第几个月( 1~12 )

Month (“2002-5-20”)

5

WeekDay(D|S)

Integer 返回是星期几(星期日为 1 ,依此

类推)

WeekDay(#2002-5-20#)

2

常用内部函数

日期函数

Page 34: Excel VBA 程序设计

函数名 函数值类型 功能 示 例 返回值Now() Date 返回系统日期和时

间Now() 或 Now 03-4-16

10:48:22

Time() Date 返回系统时间 Time() 或 Time 10:48:22

Date() Date 返回系统日期 Date() 或 Date 03-4-16

MonthName(N)

String 返回 N 指的月份名

MonthName(Month(Date()))

“五月”

常用内部函数

日期函数

Page 35: Excel VBA 程序设计

常用内部函数

Shell函数Shell函数可以调用 ( 执行 )磁盘上已保存的可执行文件(扩展名必须是 .COM 、 .EXE 、 .BAT )。

【格式】 Shell (“ 命令文件名” [ ,窗体模式 ])

【说明】 < 命令文件名 > 必须是全名,包括盘符、路径、主

文件名、扩展名[窗体模式 ] 是可选项,取不同的值,打开的窗体模

式不同。

Page 36: Excel VBA 程序设计

36

The end