变量、算符表达式和对话框 - EXCEL VBA(8)
导读
变量 | 运算符和表达式 | 输入和输出对话框 |
|
|
|
一、变量
1、声明变量
声明变量就是事先将变量名及其类型在使用前通知VBA系统,VBA按变量数据类型分配存储空间。可以用Dim、Private、Public或Static关键字来声明变量,最常用的是使用Dim声明变量,样例代码:
Dim x As Integer
Dim y As Integer
在VBA中,变量的声明分隐式声明和显式声明两种
I、隐式声明
在使用一个变量之前不用声明这个变量,这种变量使用方式称为隐式变量声明。使用隐式变量时,VBA自动创建变量,并设置为Variant类型。在为其指定值之前,其值为Empty,当为它赋值后,则采用所赋值的类型作为变量类型。
当程序项目较大时,未经声明的变量容易产生错误,而这种错误系统不容易检查出来。因此,建议在使用每个变量之前要先声明。
II、显式声明
为了避免隐式声明引起的麻烦,可以在模块、类模块代码前加入如下语句:
Option Explicit
设置了强制显式声明语句后,当遇到一个未声明变量时,VBA就会发出错误信号。
2、变量作用域和生存期
在VBA应用程序中,将使用各种不同类型的变量。有些变量可以在整个应用程序中使用,而另一些变量只能在某一过程中使用,这就是变量的作用域。
有的变量在过程使用完毕后即自动消失,而有的变量再次进入过程时还可以访问其值,这就是变量的生存期。
I、变量作用域
变量作用域指变量可以被程序使用的范围,分为三种:
- 过程级别:称为局部变量。只能在过程(Sub)中使用的变量,过程结束后变量的值自动消失。这类变量用Dim关键字进行定义;
- 模块级别:称为模块变量。在VBA模块顶端定义的变量,该模块的中的各个过程都可以访问模块级变量。这类变量在模块的开始部分用Dim或Private关键字进行定义;
- 全局级别:称为全局变量。在整个应用程序范围内(所有模块和过程)都可以使用的变量。这类变量在模块的开始部分用Public关键字进行定义。
II、变量生存期
一般情况下,变量的生存期和作用域相同,即变量在其作用域内有效,超出作用域后变量的值自动消失。
注意,在过程中使用Static关键字声明的变量称为静态变量,这类变量在整个应用程序中有效,即应用程序未结束,静态变量的值一直保留在内存中,且其内容不会改变。但静态变量只在定义的过程中才能访问。
二、运算符和表达式
1、算术表达式
由算术运算符组成的表达式称为算术表达式,VBA中算术运算符和优先级如下表:
2、比较表达式
比较运算又称关系运算,用于比较两个操作变量,其运算结果为逻辑值Ture或False。比较运算符优先级相同,其运用样例如下表:
对于字符串的比较,VBA规定按字母的ASCII码进行比较。例如字母A的ASCII码为65、字母B的ASCII码为66,因此语句【"A">"B"】运算结果为逻辑值False。
3、逻辑表达式
逻辑运算是指表达式间的逻辑关系,其运算结果为逻辑值,只能为True或False。逻辑运算操作符及优先级列表如下:
注意,如果X、Y两个值不相同,则异或结果为1。如果X、Y两个值相同,异或结果为0。
4、连接运算表达式
字符串连接运算的作用是用来连接两个以上的字符串,连接运算符只有两个,即“+”和“&”。其区别为:
- “+”运算符连接两个操作数都是字符串的情况;
- “&”运算符将两个操作数强制连接为字符串。
三、输入和输出对话框
1、InputBox输入对话框
在VBA中,使用Application对象的InputBox方法可以显示一个接受用户输入的对话框。此对话框有一个【确定】按钮和一个【取消】按钮。如果单击【确定】按钮,则InputBox方法返回对话框中输入的值;如果单击【取消】按钮,则InputBox方法返回逻辑值False。InputBox方法语法如下:
I、方法
Application.InputBox(Prompt,Title,Default,Left,Top,HelpFile,HelpContextID,Type)
II、参数
- Prompt - 对话框文本框出现的字符串,最大长度为1024字节;
- Title - 对话框标题,如果省略则把应用程序名放入标题;
- Default - 文本框中的缺失字符串,如果省略该参数文本框为空;
- Left、Top - 对话框左上角位置,Left必须Top同时出现;
- HelpFile - 设置对话框帮助文件,该参数可以省略;
- HelpContextID - 设置对话框帮助编号,该参数可以省略;
- Type - 指定数据输入类型(1-数字、2-字符串、4-逻辑值、8-单元格引用、16-错误值、64-数组)。
例如,下面的代码提示用户在工作表Sheet1中选取一个单元格。
Worksheets("sheet1").Activate "激活sheet1工作表
Set myCell = Application.InputBox(prompt:="选择一个单元格", Type:=8)
Sheet1.Cells(2, 1) = myCell
运行这段代码弹出的输入对话框→鼠标选择Sheet1工作表的单元格“A1”→点击【确定】按钮,代码将输入值赋值给给Sheet1工作表的单元格“A2”。如图:
2、MsgBox函数显示信息框
使用MsgBox函数可以打开一个对话框,在对话框中显示提示信息,等待用户单击按钮,并返回一个整型值,告诉系统用户选择了哪一个按钮。MsgBox函数语法如下:
I、方法
value=MsgBox(prompt,buttons,title,default,helpfile,context)
II、参数
- prompt - 显示信息的字符串;
- buttons - 指定对话框中按钮的数目和显示(如按钮常用值表);
- title - 对话框标题;
- helpfile - 设置对话框帮助文件;
- context - 设置对话框帮助编号;
MsgBox函数5个参数中除第1个参数外,其余都可省略。buttons按钮常用值如下表:
buttons参数由上面4组数值组成,组成原则是每类选择一个值(主要使用前三组数值的组合),不同组合如图:
代码如下:
Dim myButton As Integer
myButton = MsgBox("vbYesNo组合", vbYesNo + vbQuestion + vbDefaultButton1)
MsgBox myButton "显示数值6
MsgBox函数也可以写成语句形式(如,“MsgBox myButton”),这种形式用来显示提示信息。这时程序不知道用户单击了对话框中的哪个按钮。
本文内容比较琐碎,但在VBA程序代码中随处可见,是熟练掌握VBA编程技术的必备基础知识。