Excel VBA 第二讲 VB 语法基础.docx

上传人:b****4 文档编号:4689626 上传时间:2023-05-07 格式:DOCX 页数:23 大小:147.82KB
下载 相关 举报
Excel VBA 第二讲 VB 语法基础.docx_第1页
第1页 / 共23页
Excel VBA 第二讲 VB 语法基础.docx_第2页
第2页 / 共23页
Excel VBA 第二讲 VB 语法基础.docx_第3页
第3页 / 共23页
Excel VBA 第二讲 VB 语法基础.docx_第4页
第4页 / 共23页
Excel VBA 第二讲 VB 语法基础.docx_第5页
第5页 / 共23页
Excel VBA 第二讲 VB 语法基础.docx_第6页
第6页 / 共23页
Excel VBA 第二讲 VB 语法基础.docx_第7页
第7页 / 共23页
Excel VBA 第二讲 VB 语法基础.docx_第8页
第8页 / 共23页
Excel VBA 第二讲 VB 语法基础.docx_第9页
第9页 / 共23页
Excel VBA 第二讲 VB 语法基础.docx_第10页
第10页 / 共23页
Excel VBA 第二讲 VB 语法基础.docx_第11页
第11页 / 共23页
Excel VBA 第二讲 VB 语法基础.docx_第12页
第12页 / 共23页
Excel VBA 第二讲 VB 语法基础.docx_第13页
第13页 / 共23页
Excel VBA 第二讲 VB 语法基础.docx_第14页
第14页 / 共23页
Excel VBA 第二讲 VB 语法基础.docx_第15页
第15页 / 共23页
Excel VBA 第二讲 VB 语法基础.docx_第16页
第16页 / 共23页
Excel VBA 第二讲 VB 语法基础.docx_第17页
第17页 / 共23页
Excel VBA 第二讲 VB 语法基础.docx_第18页
第18页 / 共23页
Excel VBA 第二讲 VB 语法基础.docx_第19页
第19页 / 共23页
Excel VBA 第二讲 VB 语法基础.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Excel VBA 第二讲 VB 语法基础.docx

《Excel VBA 第二讲 VB 语法基础.docx》由会员分享,可在线阅读,更多相关《Excel VBA 第二讲 VB 语法基础.docx(23页珍藏版)》请在冰点文库上搜索。

Excel VBA 第二讲 VB 语法基础.docx

ExcelVBA第二讲VB语法基础

ExcelVBA

第二讲VB语法基础

1.感谢

感谢獨箛勼劍提出培训想法,小新组织此次网络培训。

感谢锅在各群内发消息公告。

特别感谢辉姑娘提供超级群作为授课解答群。

2.关于群内授课

为方便各Excel爱好者更好地将Excel应用于实际工作,群授课主办方将不定期为大家提供相关课题的培训。

此组织是几个Excel忠实爱好者为提升广大爱好者Excel使用技能水平而自发建立,并希望以此会友共同享受其乐趣。

对于授课形式、授课地点、讨论形式等一切与授课相关点均欢迎大家提出好的建议,也欢迎您的加入!

3.请参与投票:

您最希望听的5个课题?

(截止21号)

投票结果会决定安排讲解哪些课程及讲课的优先顺序

4.关于本次课题

本次课题VB语法基础会让您了解VBA的基本语法规则,让您明白原来VBA是这样运行程序的。

5.适合听众

对VBA感到很神奇,想知道到底VBA能做什么

想系统学习VBA的朋友

6.目标

了解VB基本语法规则

可以编写简单的代码

7.一切从宏开始

录制的宏是由Sub定义的子过程

[Private|Public|Friend][Static]Subname[(arglist)]

[statements]

[ExitSub]

[statements]

EndSub

SubMacro1()

WithSelection.Font

.Color=-16776961

.TintAndShade=0

EndWith

EndSub

将子过程修改为有返回值的函数

[Public|Private|Friend][Static]Functionname[(arglist)][Astype]

[statements]

[name=expression]

[ExitFunction]

[statements]

[name=expression]

EndFunction

‘返回指定单元格的字体颜色

FuncionGetFontColor(TargetAsRange)AsLong

DimlCellColorAsLong

IfIsNumeric(Target.Value)Then

lCellColor=Target.Font.Color

EndIf

GetFontColor=lCellColor

EndSub

几何运算函数

‘计算圆的面积

FunctionCircleArea(RAsDouble)AsDouble

ConstPIAsDouble=3.14159265358979

CircleArea=PI*R^2

EndFunction

子过程的调用方式

‘自动计算当前单元格为半径的圆的面积

SubAutoCalculateCircleArea()

ActiveCell.Offset(0,1).Value=CircleArea(ActiveCell.Value)

EndFunction

8.变量和常量、数据类型

变量声明方式

Public|Private|Friend|Dim|Static[WithEvents]varname[([subscripts])][As[New]type][,[WithEvents]varname[([subscripts])][As[New]type]]...

DimlLoopRowAsLong

常量声明方式

[Public|Private]Constconstname[Astype]=expression

基本数据类型

字符串型、数值型数据、字节型、货币性、对象型、日期型、布尔型和变体数据类型

String,Byte,Integer,Long,Single,Double,Currency,Object,Date,Boolean,Variant

命名规则

⑴名字只能由字母、数字和下划线组成;

⑵名字的第一个字母必须是英文字母,最后一个字符可以是类型说明符;

⑶名字的字符的最长长度是255个;

⑷不能使用VBA的保留字为变量名

⑸名字中的字母不区分大小写。

⑹同一范围内命名必须唯一,所谓的作用域就是变量的作用范围。

变量的赋值

[Let]|Setvarname=expression

9.运算符与表达式

算术运算符

运算

运算符

表达式举例

说明

^

X^Y

取负

-

-X

乘法

*

X*Y

浮点除法

/

X/Y 

整数除法

\

X\Y

截去小数,不舍入

取模

Mod

XModY

加法

+

X+Y

减法

-

X-Y

连接运算符

运算

运算符

表达式举例

说明

连接

&

"Hello"&"World"

返回"HelloWorld"

如果expression不是字符串,则将其转换成String变体。

如果两个表达式都是字符串表达式,则result的数据类型是String;否则result是String变体。

如果两个表达式都是Null,则result也是Null。

但是,只要有一个expression是Null,那么在与其它表达式连接时,都将其作为长度为零的字符串("")处理。

任何Empty类型表达式也作为长度为零的字符串处理。

连接

+

"Hello"&"World"

返回"HelloWorld"

在使用+运算符时有可能无法确定是做加法还是做字符串连接。

为避免混淆,请使用&运算符进行连接,并且改进程序代码的可读性。

比较运算符

测试关系

运算符

表达式举例

等于

=

X=Y

不等于

<>或><

X<>Y

小于

<

X

大于

>

X>Y

小于等于

<=

X<=Y

大于等于

>=

X>=Y

比较样式

Like

"BAT123khg"Like"B?

T*"返回True

比较对象变量

Is

使用Is运算符来比较两个对象引用

逻辑运算符

逻辑

运算符

表达式举例

说明

Not

NotX

原来为真,否定为假

And

XAndY

其一为假,结果为假

Or

XOrY

其一为真,结果为真

异或

Xor

XXorY

不同为真,相同为假

等价

Eqv

XEqvY

相同为真,不同为假

蕴含

Imp

XImpY

X为真,Y为假,结果为假

X

Y

NotX

XAndY

XOrY

XXorY

XEqvY

XImpY

-1

-1

0

-1

-1

0

-1

-1

-1

0

0

0

-1

-1

0

0

0

-1

-1

0

-1

-1

0

-1

0

0

-1

0

0

0

-1

-1

表达式执行顺序

⑴首先执行函数运算。

⑵其次算术运算,算术运算符优先顺序:

幂、取负、乘和浮点除、整除、取模、加和减、连接

⑶再次关系运算。

⑷最后进行逻辑运算,优先顺序为:

Not、And、Or、Xor、Eqv、Imp。

注意:

①在运算中,括号内的运算的优先于括号外的运算。

②字符串连接运算符不是算术运算符,它的优先级高于比较运算符,低于算术运算符。

③Like和比较运算符的优先顺序相同。

进行模式匹配处理,应该注意?

和*两个通配符。

Is是对象比较运算符,它不考虑对象的值,只是针对两个对象是否参照了相同的对象。

④当使用幂时,负号优先,例如:

4^-2,表示4的负2次方。

表达式书写的注意事项

⑴乘号(*)不能省略,也不能用“·”代替。

⑵一般情况下,不允许两个运算符相连,应当用括号隔开。

⑶表达式中的括号只能是圆括号。

⑷幂运算符表示自乘,如A^B表示A的B次方,即B个A连乘。

当A和(或)B不是单个常量或变量,要用括号括起来。

如(A+B)^(C+D)

10.VBA的控制结构

选择控制结构

1If选择结构

IfconditionThen[statements][Elseelsestatements]

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

IfconditionThen

[statements]

[ElseIfcondition-nThen

[elseifstatements]...

[Else

[elsestatements]]

EndIf

(1)If…Then…

单向选择结构。

PublicSubIfDemo1()

'If…Then…示例

DimdPointsAsDouble

dPoints=InputBox("请输入得分!

","选择结构示例")

IfdPoints>=320ThenCallMsgBox("达到或超过分数线,录取了!

",vbExclamation,"If…Then…示例")

EndSub

(2)If…Then…Else…

双向选择结构。

简单示例

PublicSubIfDemo2()

'If…Then…Else…简单示例

DimdPointsAsDouble

dPoints=InputBox("请输入得分!

","If…Then…")

IfdPoints>=320Then

CallMsgBox("达到或超过录取分数线,录取了!

",vbExclamation,"If…Then…示例")

Else

CallMsgBox("没有超过录取分数线,没被录取!

",vbExclamation,"If…Then…示例")

EndIf

EndSub

嵌套示例

PublicSubIfDemo3()

'If…Then…Else…嵌套示例

DimdPointsAsDouble

dPoints=InputBox("请输入得分!

","选择结构示例")

IfdPoints>=550Then

CallMsgBox("达到或超过本科分数线,本科录取了!

",vbExclamation,"If…Then…Else…嵌套示例")

Else

IfdPoints>=320Then

CallMsgBox("达到或超过专科分数线并且没到本科分数线,专科录取了!

",vbExclamation,"If…Then…Else…嵌套示例")

Else

CallMsgBox("没有超过录取分数线,没被录取!

",vbExclamation,"If…Then…Else…嵌套示例")

EndIf

EndIf

EndSub

组合示例

PublicSubIfDemo4()

'If…Then…Else…组合示例

DimdPointsAsDouble

dPoints=InputBox("请输入得分!

","选择结构示例")

IfdPoints>=550Then

CallMsgBox("达到或超过本科分数线,本科录取了!

",vbExclamation,"If…Then…Else…组合示例")

EndIf

IfdPoints>=320AnddPoints<550Then

CallMsgBox("达到或超过专科分数线并且没到本科分数线,专科录取了!

",vbExclamation,"If…Then…Else…组合示例")

EndIf

IfdPoints<320Then

CallMsgBox("没有超过录取分数线,没被录取!

",vbExclamation,"If…Then…Else…组合示例")

EndIf

EndSub

(3)If…ElseIf…Else

属于嵌套多重判断结构。

PublicSubIf…ElseIf…Else()

'If…ElseIf…Else示例

DimdPointsAsDouble

dPoints=InputBox("请输入得分!

","选择结构示例")

IfdPoints>=550Then

CallMsgBox("达到或超过本科分数线,本科录取了!

",vbExclamation,"If…ElseIf…Else示例")

ElseIfdPoints>=320Then

CallMsgBox("达到或超过专科分数线并且没到本科分数线,专科录取了!

",vbExclamation,"If…ElseIf…Else示例")

Else

CallMsgBox("没有超过录取分数线,没被录取!

",vbExclamation,"If…ElseIf…Else示例")

EndIf

EndSub

2IIf函数

属于双向的选择结构.

PublicSubIIfDemo()

'IIf函数示例

DimdPointsAsDouble

DimsResultAsString

dPoints=InputBox("请输入得分!

","选择结构示例")

sResult=IIf(dPoints>=320,"达到或超过录取分数线,录取了!

","没有超过录取分数线,没被录取!

")

CallMsgBox(sResult,vbExclamation,"IIf函数示例")

EndSub

分支控制结构

1Select…Case语句

SelectCase语句功能根据表达式的值,来决定执行几组语句中的其中之一。

PublicSubSelect…Case()

'Select…Case示例

DimdPointsAsDouble

dPoints=InputBox("请输入得分!

","分支结构示例")

SelectCasedPoints

Case0To319.99

CallMsgBox("没有超过录取分数线,没被录取!

",vbExclamation,"Select…Case示例")

Case320To549.99

CallMsgBox("达到或超过专科分数线并且没到本科分数线,专科录取了!

",vbExclamation,"Select…Case示例")

Case550To700

CallMsgBox("达到或超过本科分数线,本科录取了!

",vbExclamation,"Select…Case示例")

CaseElse

CallMsgBox("非法输入,不能判断!

",vbExclamation,"Select…Case示例")

EndSelect

EndSub

2Switch函数

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

计算一组表达式列表的值,然后返回与表达式列表中最先为True的表达式所相关的Variant数值或表达式

3Choose函数

Choose(index,choice-1[,choice-2,...[,choice-n]])

根据索引值(Index)来输出索引值数组中的对象

循环控制结构

1For循环

(1)For…Next

Forcounter=startToend[Stepstep]

[statements]

[ExitFor]

[statements]

Next[counter]

Fori=1To10

ForJ=1To10

ForK=1To10

...

NextK

NextJ

Nexti

(2)ForEach…Next

ForEachelementIngroup

[statements]

[ExitFor]

[statements]

Next[element]

2While循环

Whilecondition

[statements]

Wend

3Do…Loop循环

Do[{While|Until}condition]

[statements]

[ExitDo]

[statements]

Loop

Do

[statements]

[ExitDo]

[statements]

Loop[{While|Until}condition]

11.数组

S(n)

其中S成为数组名,n成为下标。

使用下标时,必须将下标放在一对紧跟在数组名之后的圆括号中,如:

S(5),不能是S5、S5或S[5]等。

在VisualBaisc中,一个数组中的元素可以是相同类型的数据,也可以是不同类型的数据。

由具有一个下标的下标变量所组成的数组称为一维数组(也叫清单)。

由具有两个或两个以上下标的下标变量所组成的数组称为二维数组或多维数组。

DimiMyArray(10,10)AsInteger

iMyArray(1,1)=...

DimsArray()AsSingle

ReDimsArray(9)

sArray(1,1)=…

ReDimPreservesArray(UBound(sArray)+10)

12.变量生命周期

模块、类中变量的声明方式Public,Private,Static,Dim(Friend)

子过程参数如何定义

13.常用函数

测试函数

函数

说明

IsNumeric(expression)

返回Boolean值,指出表达式的运算结果是否为数。

IsDate(expression)

返回Boolean值,指出一个表达式是否可以转换成日期。

IsEmpty(expression)

返回Boolean值,指出变量是否已经初始化。

IsArray(varname)

返回Boolean值,指出变量是否为一个数组。

IsError(expression)

返回Boolean值,指出表达式是否为一个错误值

IsNull(expression)

返回Boolean值,指出表达式是否不包含任何有效数据(Null)。

IsObject(identifier)

返回Boolean值,指出标识符是否表示对象变量。

IsMissing(argname)

返回Boolean值,指出一个可选的Variant参数是否已经传递给过程。

数学函数

函数

说明

Sin(number)

返回一Double,指定参数的sine(正弦)值。

Cos(number)

返回一个Double,指定一个角的余弦值。

Tan(number)

返回一个Double的值,指定一个角的正切值。

Atn(number)

返回一个Double,指定一个数的反正切值。

Log(number)

返回一个Double,指定参数的自然对数值。

Exp(number)

返回Double,指定e(自然对数的底)的某次方。

Abs(numberx)

返回参数的绝对值,其类型和参数相同。

Int(number)、Fix(number)

都返回参数的整数部分,区别:

Int将-8.4转换成-9,而Fix将-8.4转换成-8

Sgn(number)

返回一个Variant(Integer),指出参数的正负号。

number大于0返回1

number等于0返回0

number小于0返回-1

Sqr(number)

返回一个Double,指定参数的平方根

Rnd[(number)]

返回0-1之间的单精度数据,x为随机种子

注意:

⑴Sin、Cos、Tan和Atn中的参数number表示一个以弧度为单位的角。

一般参数是以角度给定,我们可以使用公式转换成弧度:

1度=π/180=3.1415926/180

⑵Rnd函数可以产生随机数,当应用程序反复使用随机数时,同一序列的随机数会反复出现,用Randomize(x)语句可以消除这种情况。

x是整型数(即种子),可以省略。

字符串函数

函数

说明

Trim(string)、Ltrim(string)、Rtrim(string)

返回Variant(String),其中包含指定字符串的拷贝,没有前导空白(LTrim)、尾随空白(RTrim)或前导和尾随空白(Trim)。

Len(string|varname)

返回Long,其中包含字符串内字符的数目,或是存储一变量所需的字节数。

Left(string,length)

返回Variant(String),其中包含字符串中从左边算起指定数量的字符。

Right(string,length)

返回Variant(String),其中包含从字符串右边取出的指定数量的字符。

Mid(string,start[,length])

返回Variant(String),其中包含字符串中指定数量的字符。

Ucase(string)

返回Variant(String),其中包含转成大写的字符串。

Lcase(string)

返回转成小写的String。

Space(number)

返回特定数目空格的Variant(String)。

Asc(string)

返回一个Integer,代表字符串中首字母的字符代码。

Chr(charcode)返回

返回String,其中包含有与指定的字符代码相关的字符。

StrComp(string1,string2[,compare])

返回Variant(Integer),为字符串比较的结果。

StrConv(string,conversion,LCID)

返回按指定类型转换的Variant(String)。

Format(expression[,format[,firstdayofweek[,firstweekofyear]]])

返回Variant(String),其中含有一个表达式,它是根据格式表达式中的指令来格式化的。

转换函数

函数

说明

CBool(expression)

转换为Boolean型。

CByte(expression)

转换为Byte型。

CCur(expression)

转换为Currency型。

CDate(expression)

转换

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2