VBA语言最简明知识点

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第0章VBA语言基础

我们MFA的VBA讨论班已经进行了好几次了,但我们选用的教材似乎默认了读者是具有语言基础的,不少同学都表示课听起来比较迷糊,所以我就是产生了整理这个第0章的想法。

大家都已经学过c语言,对一种编程语言的基本要素应该都有一些认识,所以我在此主要是强调两种语言的不同之处,很多具体的东西(如循环语句)可以翻看前几次上课的ppt。

书写规范

1)VBA不区分标识符的字母大小写,一律认为是小写字母;

2)一行可以书写多条语句,各语句之间以冒号: 分开;

3)一条语句可以多行书写,以空格加下划线_ 来标识下行为续行;

标识符及命名规则

数据类型

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

变量与常量

1)VBA允许使用未定义的变量,默认是变体变量。

2)在模块通用说明部份,加入Option Explicit 语句或者在vba编辑器中依次选择工具-选项-编辑器-要求变量声明可以强迫用户进行变量定义(推荐使用)。

3)变量定义语句及变量作用域

Dim 变量as 类型'定义为局部变量,如Dim xyz as integer

Private 变量as 类型'定义为私有变量,如Private xyz as byte

Public 变量as 类型'定义为公有变量,如Public xyz as single

Global 变量as 类型'定义为全局变量,如Globlal xyz as date

Static 变量as 类型'定义为静态变量,如Static xyz as double

一般变量作用域的原则是,那部份定义就在那部份起作用,模块中定义则在该模块那作用。

这一部分和c语言中的类似,实际上我也搞得不太清楚,大家有疑问的可以在版上提出来商量一下。

常量

Const Pi=3.1415926 as single

运算符(个人感觉只需要注意红色的部分)

1)赋值运算符=

2)数学运算符&(强制字符串连接,比如将数字强行转化成字符串到其它字符串前后)、+ (字符串连接符)、+(加)、-(减)、Mod(取余)、\(整除)、*(乘)、/(除)、-(负号)、^(指数)(很方便的东东,例如4^1.5=8…)

3)逻辑运算符Not(非)、And(与)、Or(或)、Xor(异或)、Eqv(相等)、Imp(隐含)

4)关系运算符= (相同)、<>(不等)、>(大于)、<(小于)、>=(不小于)、<=(不大于)、Is(对象的比较)

5)位运算符Not(逻辑非)、And(逻辑与)、Or(逻辑或)、Xor(逻辑异或)、Eqv(逻辑等)、Imp(隐含)

6)模式匹配(like)

例如“ab” like “a*”为真

具体的规则是:? 代一字符*代任意个字符#代一个数字

[字符串A]代字符串A中任一个字符

[!字符串A]表示不在A中的字符

[A-U] 代A到U中的任一个字符

例:

Temp=”a2” Like “a#”True

Temp=”aM5b” Like “a[L-P]#[!c-e]”True

Temp=”H” Like “[!A-Z]”False

数组

Dim 数组名([lower to ]upper [, [lower to ]upper, ….]) as type ;Lower缺省值为0。二维数组是按行列排列,如XYZ(行,列)。

例如:dim singlearray(20) as integer

Dim mutiarray(1 to 20, 20) as Boolean

注意是用()括号,不是用[]

注释语句

1) 单引号’

2) Rem

推荐使用1) , 因为比较常见,rem我不太会用。。。

判断语句

1)If…Then…Else语句

如1:If A>B And C

如2:If x>250 Then x=x-100

或者,可以使用块形式的语法:

如:

If Number < 10 Then

Digits = 1

ElseIf Number < 100 Then

Digits = 2

Else

Digits = 3

End If

2)Select Case…Case…End Case语句

如1:

Select Case Pid

Case “A101”

Price=200

Case “A102”

Price=300

……

Case Else

Price=900

End Select

3)Choose 函数

choose(index, choce-1,choice-2,…,choice-n),可以用来选择自变量串列中的一个值,并将其返回,index表达式的结果是一个数值,且界于 1 和n间。如:

Choose(2, "Speedy", "United", "Federal") =“United”(这是真的)

4)Switch函数

Switch(expr-1, value-1[, expr-2, value-2 _ [, expr-n,value-n]])

switch函数和Choose函数类似,但它是以两个一组的方式返回所要的值,在串列中,最先为TRUE的值会被返回。expr 必要参数,要加以计算的Variant 表达式。value 必要参数。如果相关的表达式为True,则返回此部分的数值或表达式,没有一个表达式为True,Switch 会返回一个Null值。

循环语句

1)For Next语句以指定次数来重复执行一组语句

如1:

For i=1 to 10

Sum=sum+i

Next i

如2:

For Words = 10 To 1 Step -1 ' words从10到1,每次以步长-1变化,循环十次@#¥#@¥^¥#^!^¥!¥^

Next Words

2)For Each…Next语句主要功能是对一个数组或集合对象进行,让所有元素重复执行一次语句

如1:

For Each rang2 In range1

With range2.interior

.colorindex=6

.pattern=xlSolid

End with

Next rang2

这上面一例中用到了With…End With 语句,目的是省去对象多次调用,加快速度;语法为:

With object

[statements]

End With

3)Do…loop语句在条件为true时,重复执行区块命令

例1:(相当于c语言中的while-do语言)

Do {while |until} condition ' while 为当型循环,until为直到型循环

Statements

Loop

例2:(相当于c语言中的do-while语言)

Do

Statements

Loop {while |until} condition

0)可以使用exit for 或者exit do 退出相应的循环

还有while-wend,但词语快被淘汰不推荐使用

过程和函数

相关文档
最新文档