天天看点

变量、算符表达式和对话框 - EXCEL VBA(8)

作者:银河统计工作室

导读

变量 运算符和表达式 输入和输出对话框
  • 声明变量
  • 变量作用域和生存期
  • 算术表达式
  • 比较表达式
  • 逻辑表达式
  • 连接运算表达式
  • InputBox输入对话框
  • MsgBox函数显示信息框

一、变量

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中算术运算符和优先级如下表:

变量、算符表达式和对话框 - EXCEL VBA(8)

2、比较表达式

比较运算又称关系运算,用于比较两个操作变量,其运算结果为逻辑值Ture或False。比较运算符优先级相同,其运用样例如下表:

变量、算符表达式和对话框 - EXCEL VBA(8)

对于字符串的比较,VBA规定按字母的ASCII码进行比较。例如字母A的ASCII码为65、字母B的ASCII码为66,因此语句【"A">"B"】运算结果为逻辑值False。

3、逻辑表达式

逻辑运算是指表达式间的逻辑关系,其运算结果为逻辑值,只能为True或False。逻辑运算操作符及优先级列表如下:

变量、算符表达式和对话框 - EXCEL VBA(8)

注意,如果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”。如图:

变量、算符表达式和对话框 - EXCEL VBA(8)

2、MsgBox函数显示信息框

使用MsgBox函数可以打开一个对话框,在对话框中显示提示信息,等待用户单击按钮,并返回一个整型值,告诉系统用户选择了哪一个按钮。MsgBox函数语法如下:

I、方法

value=MsgBox(prompt,buttons,title,default,helpfile,context)

II、参数

  • prompt - 显示信息的字符串;
  • buttons - 指定对话框中按钮的数目和显示(如按钮常用值表);
  • title - 对话框标题;
  • helpfile - 设置对话框帮助文件;
  • context - 设置对话框帮助编号;

MsgBox函数5个参数中除第1个参数外,其余都可省略。buttons按钮常用值如下表:

变量、算符表达式和对话框 - EXCEL VBA(8)

buttons参数由上面4组数值组成,组成原则是每类选择一个值(主要使用前三组数值的组合),不同组合如图:

变量、算符表达式和对话框 - EXCEL VBA(8)

代码如下:

Dim myButton As Integer
myButton = MsgBox("vbYesNo组合", vbYesNo + vbQuestion + vbDefaultButton1)
MsgBox myButton '显示数值6           

MsgBox函数也可以写成语句形式(如,“MsgBox myButton”),这种形式用来显示提示信息。这时程序不知道用户单击了对话框中的哪个按钮。

本文内容比较琐碎,但在VBA程序代码中随处可见,是熟练掌握VBA编程技术的必备基础知识。

继续阅读