第2章Visual Basic的入门钥匙—Visual Basic语言基础

本章视频教学录像:1小时5分钟

对任何新知识的学习都是开始时最难,虽然Visual Basic一向以易学易用而著称,但是对那些从未接触过Visual Basic的初学者来说,由于编码需要遵循一定的规则,刚开始难免会因各种各样的语言规则,不知从何入手。为了学好如何应用Visual Basic程序进行编码,就必须要把基本的语言使用规则基础打好。本章将带领读者从Visual Basic的语言基础开始循序渐进地学习。介绍Visual Basic语言的基本元素和程序控制语句,主要包括标识符、数据类型、运算符、表达式、数组、程序控制结构和代码编写规则等。

本章要点(已掌握的在方框中打钩)

□ 了解标识符和常用数据类型

□ 了解常量和变量

□ 掌握各种运算符

□ 熟悉表达式的用法

□ 了解代码编写规范

2.1 标识符和数据类型

本节视频教学录像:22分钟

标识符和数据类型是Visual Basic程序的基本构成要素,本节对这两个概念进行阐述。

2.1.1 标识符

标识符是用户在编程时定义的名称,包括常量、变量、过程、函数和类等,在实际操作这些变量的时候我们需要为每个变量起一个名字以示区别。这就像在日常生活中每一个人、每一个商店都会有一个名字一样。

在Visual Basic中有两种标识符,分别是系统关键字和用户自定义标识符。

系统关键字是Visual Basic中拥有固定含义,不能被重新定义的标识符。其实在现实生活中也有这样的关键词,如计算机、手机、卫生间,这些词已经被明确赋予了它的意义,我们起名字的时候就不会再使用这些词。

Visual Basic中常见的关键字如表所示。

2.1.2 数据类型

数据类型是用抽象的方式来描述客观事物的一种定义,其不同的数据类型定义了不同的数据存储方式。计算机语言正是通过选择不同的数据类型来准确地对客观事物进行描述。数据类型的整体分类如图所示。

图中对Visual Basic 6.0中数据类型的整体情况进行了描述。在细节方面,考虑到数据的运算效率和精度要求,又将数值型分为整型、长整型、单精度型、双精度型、字节型和货币型等。各类型的字节取值和所占空间范围如表所示。

下面对表中的各种数据类型进行介绍。

1. 数值数据类型(Numeric)

数值数据类型包括整型(Integer)、长整型(Long)、单精度浮点型(Single)、双精度浮点型(Double)和货币型(Currency)。要提高程序的运行性能,就要具体数据具体对待。如果变量中存放的数据是整数,就要将其声明为整型(Integer)或者长整型(Long);如果变量中存放的数据是带小数点的数字,就应该将变量声明为单精度浮点型(Single)、双精度浮点型(Double)或者货币型(Currency)。

例如:

      Dim s As lnteger
      s=3.65
      print s

运行程序后,会在窗体中直接输出一个数值4。这里需要注意的是,将整型或货币型的数值赋给整型变量后,VB会自动对数值的小数部分进行四舍五入。

2. 字节数据类型(Byte)

如果变量中存放的是二进制数,则要将变量声明为字节数据类型(Byte)。特别是对变量中存储的二进制数据需要进行类型转换。如果不用字节数据类型存储这些二进制数,可能会导致二进制数据的丢失或损毁。

提示

在计算机中通常把用来存储一个英文字母的8个二进制位叫作一个字节。一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。符号中英文标点占一个字节,中文标点占两个字节。

3. 字符串数据类型(String)

字符串是指除了双引号和回车符号之外的所有可以输出的字符。字符串包括在双引号中,如果变量中保存的数据都是字符串(例如人名),就应该把变量声明为字符串类型。在Visual Basic中,String变量或参数默认是一个可变长度的字符串,随着对字符串赋予新数据,它的长度可增可减。当然,也可以声明字符串具有固定长度,例如:

      Dim Name As String * 20

这条语句声明变量Name是一个长度为20个字符的定长字符串常量。如果你声明了一个定长字符串变量的长度后实际存储的字符长度小于声明长度,Visual Basic会自动将剩余的部分填充空格;如果赋予字符串的长度超过了声明长度,Visual Basic会自动将超出长度部分的字符截去。

4. 布尔数据类型(Boolean)

布尔数据类型又叫作逻辑型数据。如果变量的值只有两个对立的状态,如“True”或“False”、“Yes”或“No”,就应该将变量声明为布尔数据类型。在Visual Basic中布尔数据类型的默认值为False。

提示

布尔是英国的数学家和逻辑学家,1815年11月2日生于林肯,1864年12月8日卒于爱尔兰的科克。为了纪念他在逻辑学方面的卓越贡献,人们将表示逻辑变量的值以他的名字命名。

5. 日期型数据类型(Date)

如果变量中要保存的数据是用来表示日期和时间的,就应该将变量声明为日期数据类型。日期数据类型在代码中进行赋值的时候,必须用两个英文“#”号括起来。例如:

      Dim s As Date
      s = #11/23/2009#
      Print s

最终的结果将会在窗体上显示“2009-11-23”字样。

提示

当其他数值类型的数据转换为日期数据类型的时候,小数点左边的值表示日期,小数点右边的值表示时间。如果是负数,则表示公元1899年12月31日前的日期。

6. 对象数据类型(Object)

对象数据类型(Object)的变量作为32位(4个字节)地址来存储,通过这个地址可以引用当前应用程序或者其他应用程序中的对象。

7. 变体型数据类型(Variant)

变体型数据类型(Variant)变量能够存储所有系统定义类型的数据。如果将其赋予Variant变量,则不必在这些数据的类型间进行转换,Visual Basic会自动完成任何必要的转换。

提示

在Visual Basic 6.0中可以将所有的变量都设置为变体类型,同时这似乎看起来也很方便,不用再去麻烦地定义其他的数据类型。然而,在程序运行的时候,因为程序变量的空间分配、数据类型的转换等都会占用大量的系统空间,因此不建议读者在编写代码的时候使用变体型数据类型,而应根据实际需求,合理地使用变量类型。

8. 自定义数据类型

上面介绍的都是Visual Basic中的基本数据类型,但是在实际编程中这些基本数据类型并不能满足所有的需求。例如,我们设计了一个员工薪水计算的程序,在这个程序中,需要用一种数据类型来描述员工的个人信息,而员工的个人信息是由姓名、性别和职位等很多项组成的。没有一种基本数据类型可以直接描述这个数据类型。这个时候可以通过将基本数据类型予以组合来创建一个符合我们自身需求的新的数据类型,这种数据类型就是自定义数据类型。自定义数据类型通过Type语句来实现。

语法格式如下所示。

        Type自定义类型名
            元素名1 As类型名
            元素名2 As类型名
            …
            元素名n As类型名
          End Type

【范例2-1】 根据自身需求,自定义一个employee变体类型,包含员工的姓名、性别、年龄和职位等字段。

⑴ 启动Visual Basic 6.0,在弹出的【新建工程】对话框中选择【标准EXE】图标,然后单击【打开】按钮。

⑵ 在【Form1】窗体上单击右键,在弹出的快捷菜单中选择【查看代码】菜单项,进入代码窗口。

技巧

用鼠标双击窗体或者选择【运行】菜单的【启动】命令,也可以进入代码窗口。

⑶ 在代码窗口的顶端输入以下代码(代码2-1-1.txt)。

      01 Private Type employee   '自定义员工的数据类型
      02  name As String '员工姓名
      03  sex As String   '员工性别
      04  age As lnteger  '员工年龄
      05  position As String      '员工职位
      06 End Type       '结束定义
      07  Dim employee1 As employee     '声明一个自定义类型的变量

⑷ 在代码窗口中选择【Form】窗体的【Click】事件。

⑸ 输入以下代码(代码2-1-2.txt)。

      01 Private Sub Form_Click()
      02  employee1.name="王小强"    '为employee1对象的name成员赋值
      03  employee1.sex="男"   '为employee1对象的sex成员赋值
      04  employee1.age="25"   '为employee1对象的age成员赋值
      05  employee1.position="社长"    '为employee1对象的position成员赋值
      06  Print"员工信息"'输出标题
      07  Print   '输出空行
      08  Print   '输出空行
      09   Print"姓名:"&employee1.name '输出姓名
      10  Print"性别:"&employee1.sex   '输出性别
      11  Print"年龄:"&employee1.age   '输出年龄
      12  Print"职位:"&employee1.position       '输出职位
      13 End Sub

【运行结果】

保存程序,单击【启动】按钮,运行程序。用鼠标单击窗体,结果如图所示。

2.2 常量和变量

本节视频教学录像:17分钟

在Visual Basic中对数据的操作离不开常量和变量。那什么是变量,什么是常量,常量和变量各有什么特点,在操作常量和变量的时候需要注意些什么?本节将介绍相关内容。

2.2.1 常量

常量是指在程序运行过程中其值不变的数字、字符或字符串。用户在编程时使用的常数就是一种常量。有的读者可能会有这样的疑问,如果在编程的时候需要使用某个具体数字,比如10,那么直接写上10不就好了,为什么还要先定义一个常量,再把10赋给这个常量,然后使用这个常量,这不是多此一举吗?

不,常量的用途自有它的微妙之处。

⑴ 如果直接使用数值来编写表达式,计算结果当然不会有任何问题。但是如果使用的这个数值变了,比如以前是10,现在变成20了,那么就要在这个程序中将所有使用到这个数值的地方都修改掉。如果我们事先定义一个常量,然后在所有使用这个数值的地方都使用这个常量,那么只需要把这个常量的值从10改成20就可以了。

⑵ 使用常量能够增强程序的可读性。如果不用一些有实际意义的名字来代替那些数字,很难说清楚在程序中某个地方的数字10和另外一个地方的数字10有什么区别,究竟各是什么意义。二者的不同之处如下面两个图所示。

不定义常量的修改方法

定义常量的修改方法

Visual Basic中的常量有两种形式:直接常量和符号常量。

1. 直接常量

直接常量实际上就是所赋的值为基本类型的常量,主要有字符串常量、数值常量、布尔常量,以及日期常量等。

⑴ 字符串常量

字符串常量是用双引号括起来的,除了双引号、回车和换行符之外的所有字符定义的常量。如果双引号内没有任何字符,并不表示这个常量不存在,只是表明这是一个内容为空的字符串,我们把它叫作空字符串。

⑵ 数值常量

数值常量就是值为数值的常量。常见的5种数值常量有整数常量、长整型常量、定点数常量、浮点数常量和字节数常量。

⑶ 布尔常量

布尔常量就是取值为布尔值的常量,即只有True和False两个取值的常量。

⑷ 日期常量

日期常量是所取值为表示日期时间的值的常量。

2. 符号常量

符号常量分为系统内部定义常量和用户自定义常量两种。

⑴ 系统内部定义常量

在Visual Basic中内置了一些经常使用的常量,通常这些常量以字母“vb”作为前缀,如vbCalendar、vbCallType等。

① 打开Visual Basic开发环境,按【F2】快捷键或者选择【视图】菜单中的【对象浏览器】菜单项,打开【对象浏览器】窗口。

② 在库选择下拉列表中选择【VB】或者【VBA】选项,就可以看到很多的系统内部定义常量。

⑵ 用户自定义常量

如果用户觉得系统内部定义常量不能满足自己的需求,可以通过一定的规则创建属于自己的符号常量。在Visual Basic中,可使用Const语句创建一个符号变量。

语法:

        [Private|Public] Const <常量名> [As类型] = <表达式>

语句前面的Private或Public是定义的这个常量的作用域,其中Private表示定义的常量只能在该常量所在模块内使用,而Public则表示定义的常量可以被该常量所在模块之外的其他模块使用。

常量名:指定常量名称

Const:常量定义关键字。

As:指定常量的类型。

表达式:指定常量定义的数值常数、字符串常数或者由运算符组成的表达式。如果是数值常数,不仅可以使用十进制,还可以使用十六进制(数值前加“&H”)和八进制(数值前加“&O”)。

例如:

      Const s As String="木木"     '定义字符型常量
      Const s As lnteger=100      '定义整型常量

【语法详解】

常量不同于变量,一旦定义了一个常量,这个常量就会一直占据一定的内存空间。从程序执行效率的角度考虑,不要在程序中定义不需要使用的常量。

2.2.2 变量

在Visual Basic中,变量是指在程序运行的过程中,具有特定类型的可以改变的数字、字符或字符串。

在我们编写程序时,有时某个值是不确定的或者是需要在程序运行中由用户指定的,这时我们可以通过定义一个变量来写出运算表达式,而不必知道这个值是多少。

例如要编写一个根据员工工作年数来计算奖金的程序,计算公式是:奖金=1000×工作年数。因为每个人的工作年数是不同的,所以每个人的奖金也是不一样的,这时就可以把工作年数定义为一个变量,不同的工作年数会计算出不同的奖金数。

1. 变量的类型

根据变量的作用范围,可以分为全局变量、模块/窗体变量和局部变量等3类。

⑴ 全局变量

在整个程序中都可以使用的变量。定义一个全局变量的语法为:

      Public变量名 [As类型]

⑵ 模块/窗体变量

作用范围比全局变量要小一些。模块/窗体变量可以在变量所在的模块或窗口中使用。在程序的“通用声明”部分使用Dim或者Private语句就可以定义一个模块/窗体变量。定义一个模块/窗体变量的语法为:

      Private变量名 [As类型]

⑶ 局部变量

局部变量的作用范围最小,只能在变量所在的过程中使用。在程序的某个过程中使用Dim或者Static语句就可以定义一个局部变量。局部变量虽然作用范围比较小,但是在自己的作用范围内绝对是“地头蛇”。如果在某个局部变量外部有一个和它同名的变量,在该局部变量的作用范围内起作用的将是这个局部变量。

2. 如何声明一个变量

使用Dim或Static语句进行显式声明。

⑴ 使用Dim语句声明

语法:

      Dim变量名 [As类型]

使用Dim语句声明的变量作用范围取决于Dim语句所在的位置。如果Dim语句是在某个过程内,那么声明的变量就是该过程中的局部变量;如果Dim语句是在某个窗体或模块的“通用声明”部分,那么声明的变量就是一个模块/窗体变量。

⑵ 使用Static语句声明

语法:

      Static变量名 [As类型]

使用Static定义的变量叫作静态变量。一个变量除了有它的作用范围之外,还有一个属性就是它的生命周期或者叫作存活时间。一旦一个变量的生命周期结束,那么这个变量就不存在了,它所占据的内存空间也会被释放。一个局部变量如果不是静态的,那么它所在过程的代码执行完毕这个变量的生命周期就结束了,再次执行这段代码的时候,这个变量就会重新开始一个新的生命周期。静态变量所在过程的代码执行完毕生命周期并不会结束。静态变量和非静态变量的区别就好比买房和租房,如果房子是自己买的,那么即使外出度假时房子空闲也不会有人占有这个房子;而租房,租期满了如果不续租,房子就会被房东收回,如果续租就会重新开始一个新的租期。下面通过一段代码来看看静态变量和非静态变量的区别。

      Private Sub Command1_Click()
      Static m As lnteger   '定义一个静态变量
      Dim n As lnteger    '定义一个内部变量
      m=m+1  '让静态变量值加1
      n=n+1   '让内部变量值加1
      End Sub

此段代码在第1次执行的时候,因为变量m和n都没有被赋值,所以m和n都是它们的默认初始值0。运行结束后m和n的值都是1。

当此段代码第2次被执行的时候,因为m是静态变量,所以m的生命周期并没有结束,它的值还是第1次执行后的1。因为n不是静态变量,所以第1次执行结束它的生命周期就结束了,当第2次执行的时候,它会重新开始一个新的生命周期,n会被再次赋予默认初始值0。所以第2次执行后,m为2,n为1。

隐式声明就是不经声明直接使用,此时Visual Basic将会根据所赋予的值自动设置它的类型。例如:

      x=1       'x为整型
      Name = "cat" 'Name为字符串型

隐式声明看起来似乎更加方便,但隐式声明出现的问题往往是最棘手的,因为它产生的问题很难被发现,而且编译器也不会报错。隐式声明最大的问题恰恰源自它的优点:不用经过声明可以在代码中直接使用。我们来看下面的代码。

      Private Sub Command1_Click()
      cat=6     '为没有声明的变量cat赋值
      n=car     '为没有声明的变量n赋值car
      End Sub

首先,我们不经声明直接使用了变量cat并将它赋值为6,然后想把cat的值也就是6赋给变量n,可是一不小心把cat写成了car,程序就会认为我们不经声明又直接使用了一个变量car,于是程序就又新建了一个变量car,并用默认值给这个新建的变量赋值。

这时候变量n的值已经不是6了,如果再使用变量n进行各种计算,就会出现很多出乎意料的结果,而程序依然能够运行,并且不会报错。

注意

在编程时应尽量少用隐式声明,以免产生程序在结果有误时仍可以运行的情况。

使用类型说明符直接声明一个变量的语法为:

        <变量名>类型符

在使用一个变量之前并不必先声明这个变量,Visual Basic会用变量的名字自动创建一个变量。

使用隐式声明的变量很危险,我们可以使用强制显式声明来解决这个问题。一旦开启了强制显式声明功能,如果没有声明一个变量就使用,编译器就会报错。可以通过以下两种方式开启强制显式声明。

⑴ 通过【选项】对话框设置强制显式声明

选择【工具】菜单下的【选项】菜单项,弹出【选项】对话框,选择【编辑器】选项卡,选中【要求变量声明】复选框,即可打开强制显式声明功能。

⑵ 代码声明

在代码窗口中的声明部分手动输入强制显式声明变量语句(Option Explicit)。

2.3 运算符

本节视频教学录像:12分钟

运算符就是在Visual Basic中执行某种运算功能的符号。在Visual Basic中包括算术运算符、赋值运算符、关系运算符、逻辑运算符、连接运算符和特殊运算符等。

2.3.1 算术运算符

Visual Basic提供有非常丰富的算术运算符,使用这些运算符能够实现一些非常复杂的数学运算。下表按照运算优先级高低顺序列出了Visual Basic中的算术运算符及其功能。

2.3.2 赋值运算符

Visual Basic中的赋值运算符是“=”,在这里这个等号并不是平时数学运算中的等号,它表示将等号右边的值赋给等号左边的变量。

赋值运算表达式是:

      <变量名> = <要赋的值>

变量名:可以是变量、数组或者对象的某个属性。

要赋的值:可以是常数、变量、表达式、函数或者对象的属性等,但是它必须有确定的值。

例如:

      String ="我爱VB"

表示将字符串“我爱VB”赋给变量String。这里需要注意的是,在赋值的时候,等号两边的数据类型要匹配。

2.3.3 关系运算符

关系运算符又叫作比较运算符。关系运算是通过比较两个表达式之间的关系,最终返回一个布尔值类型的运算结果。关系运算符之间的优先级是相同的。下表列出了Visual Basic中的关系运算符。

提示

如果参与比较的两个变量或表达式都是数值的话,就直接比较它们的大小;如果参与比较的两个变量或表达式都是字符的话,则将字符转换为ASCII码并比较这两个ASCII码值。

2.3.4 逻辑运算符

在Visual Basic中提供有进行逻辑运算的运算符。逻辑运算符的优先级比算术运算符和关系运算符要低。下表列出了Visual Basic中的逻辑运算符。

例如:逻辑值的运算如下表所示。

2.3.5 连接运算符

字符串连接运算符的作用是把两个字符串合并连接为一个字符串。Visual Basic有两个字符串连接运算符,分别是“&”和“+”,它们的优先级是相同的。使用“&”运算符时,如果两个字符都是字符串,则直接将两个字符串连接成一个新的字符串;如果两个字符中有一个是数值,Visual Basic自动将这个数值转换成为字符串,然后再连接成一个新字符串。

“+”运算符在参与计算的两个表达式都是字符串的时候和“&”运算符的功能是一样的,如果参与计算的另一个表达式中有一个是数值或者两个都是数值,将进行加法操作。因此,如果要做两个字符串的连接操作,最好使用“&”运算符,这样就不会为到底进行的是加法操作还是字符串连接操作而费脑筋了。

2.3.6 特殊运算符

除了以上运算符外,在Visual Basic中还有两个特殊运算符:Is和Like。

⑴ Is运算符

比较两个对象的引用变量。

语法:

      结果=对象引用变量1 ls对象引用变量2

如果对象引用变量1和对象引用变量2引用的是同一个对象,运算结果为True,否则运算结果为False,如图所示。

⑵ Like运算符

比较给定字符串是否和指定的模式相匹配。

语法:

      结果=字符串Like模式

如果字符串匹配给定的模式,结果返回True,否则返回False,如图所示。

下面列出了模式中的各种匹配条件。

⑴ ? 表示任意一个字符。

⑵ * 表示任意多个字符。

⑶ # 表示任意一个数字(0~9)。

⑷ [chars] 表示chars中出现的任意一个字符。

⑸ [!chars] 表示要匹配的字符串中不能出现chars中的任意一个字符。

例如:

      result ="a" Like "[a-z]"

运算结果为True,因为字符“a”是从a到z之间的一个字符。

2.3.7 运算符的优先级

运算符的优先级是指在计算表达式时运算符执行的先后顺序。具有较高优先级的运算符先于较低优先级的运算符执行。然而在实际开发中,我们要尽量避免使用运算符的优先级来指定运算的顺序,更好的方法是把要优先计算的部分用圆括号括起来。例如表达式a + b * c,按照优先级顺序是要先计算b *c的值,然后再和a相加。如果要执行a + b的计算,只需将表达式改为(a + b) * c就可以了。使用圆括号来指定优先级有以下两个优点。

⑴ 不再需要记忆复杂的优先级顺序,也不用担心由于优先级顺序记忆错误导致的计算错误。

⑵ 表达式更容易被人阅读。在实际开发过程中,一个软件往往需要多人共同完成,即使你能很准确地记忆和使用运算符的优先级,并不能保证别人也能很准确地记忆和使用运算符的优先级,所以使用圆括号指定程序运算表达式的优先级无疑是一种更加聪明和高效的方式。

例如:

      S=(30-5<(8+6)And 9*8=72)

一个表达式中如果包含了多种运算符,那么该运算符应该按以下次序进行:算术表达式>字符串表达式>关系表达式>逻辑表达式。因此,上例中的运算结果为Flase。

2.4 表达式

本节视频教学录像:3分钟

表达式是由常量、变量和函数等用运算符及圆括号连接而成的式子。表达式是构成程序代码的最基本要素之一。根据表达式的运算结果,可将其分为算术表达式、字符串表达式和日期表达式等3种。

2.4.1 算术表达式

用算术运算符和括号将常量、变量或函数等运算对象连接起来的式子称为算术表达式。Visual Basic中常用的算数运算符有+(加)、-(减)、*(乘)、/(除)、\(整除)、mod(模运算,求余数)和^(幂)等。

2.4.2 字符串表达式

字符串表达式是用字符串运算符将字符串连接起来的表达式。在Visual Basic中有两个字符串运算符:“&”和“+”。使用“&”运算符时,如果两个字符都是字符串,则直接将两个字符串连接成一个新的字符串;如果两个字符中有一个是数值,Visual Basic会自动将这个数值转换为字符串,然后再连接成一个新字符串。“+”运算符在参与计算的两个表达式都是字符串的时候,和“&”运算符的功能是一样的;但如果参与计算的另一个表达式中有一个是数值或者两个都是数值,则进行加法操作。

2.4.3 日期表达式

当我们需要计算或者使用时间和日期相关的数据时(例如,编写一个程序需要每天在固定的时间备份数据),就要用到日期表达式。日期表达式主要是对Date(日期型)数据类型进行计算。

2.5 代码编写规范

本节视频教学录像:9分钟

代码编写规范在应用程序的开发过程中有着极为重要的作用,有利于程序员对程序进行读写,以及方便后期维护,同时也是养成良好编程习惯的基础。

2.5.1 Visual Basic 6.0标识符的定义规则

在Visual Basic中有两种标识符,分别是系统关键字和用户自定义标识符。系统关键字是Visual Basic中拥有固定含义、不能被重新定义的标识符。用户自定义标识符是用户自己为变量通过一定的规则所定义的名称。这就像我们中国人在起名字的时候要把姓放在前面,名字放在后面一样,是一个命名规则。在Visual Basic中用户自定义标识符的命名规则如下。

⑴ 用户自定义标识符不能和系统关键字相同。

⑵ 在同一个作用域内不允许出现相同名称的用户自定义标识符。

⑶ 用户自定义标识符不区分字母大小写。

⑷ 用户自定义标识符必须以字母开头,后跟数字、英文大小写字母、下划线或美元符号“$”。

⑸ 长度不能超过255个字符,而控件、窗体、类和模块等的名字不能超过40个字符。

2.5.2 Visual Basic 6.0中变量及控件的命名规则

变量必须要命名后才能赋值。在过程内部声明的变量,在该过程执行时才存在。当运行过程结束时,该变量的值自动清除。变量命名必须符合以下规定。

⑴ 变量名必须以字母开头,不能以数字或下划线开始。

⑵ 变量不能包含嵌入的句号、空格或者其他停顿符号。

⑶ 变量长度不得超过255个字符。

⑷ 变量名不能是Visual Basic的保留字,如Name、For等。

⑸ 在编码过程中,定义变量时选择的变量名一定要遵循上述规则,否则系统会给出错误提示并以红色字体显示错误行。

在Visual Basic中,控件以图标的形式放在“工具箱”中,每种控件都有与之对应的图标。启动Visual Basic,工具箱位于窗体的左侧。

1. 标准控件(内部控件)Visual Basic 6.0的控件分为以下3类

⑴ 标准控件(也称内部控件)。

⑵ ActiveX控件。

⑶ 可插入对象。

2. 控件的命名和控件值

⑴ 在一般情况下,窗体和控件的命名都有默认值,如Form1、Command1、Text1等。在应用程序中使用约定的前缀,可以提高程序的可读性。

⑵ 为了方便使用,Visual Basic为每个控件规定了一个默认属性,在设置这样的属性时,不必给出属性名,通常把该属性称为控件的值。

2.5.3 程序书写规则

按照程序书写规则写出的代码,不仅清晰明了,更为重要的是具有很好的可读性。因此,在编写代码的时候要遵循一定的书写规则,如下所述。

⑴ 每条语句写一行,一行最多允许有255个字符。

⑵ 如果需要在同一行中书写多条语句,应用英文状态下的冒号“:”隔开。

⑶ 需要对较长的语句进行换行,可在该语句行的末尾加入一个空格和一个下划线。

例如:

      lf a > 0 and b < 0 And c <> 0 And _
      d = 0 Then

如果进行换行时没有输入空格,系统会提示语法错误。例如在上面的语句中,如果没有输入空格,就会弹出一个警告对话框,提示编译错误。

⑷ 为代码添加注释,以方便后期检查或别人阅读。

⑸ 在Visual Basic中不区分字母大小写,所以cat、CAT和Cat都是一样的,因此在定义变量的时候需要注意。

2.5.4 添加注释

优秀的程序员都具有在关键步骤下添加注释的好习惯。添加注释只是为了方便用户看懂代码而写的,目的是提高代码的可读性,其本身对程序并没影响。添加注释需要在Visual Basic一条语句的最后添加注释符(')或关键字Rem。注释符在程序运行时会通知Visual Basic自动忽略注释符之后的语句。这样便于日后检查修改程序。

2.5.5 格式化缩排程序语句

为了进一步增加程序的可读性,建议程序员尽量养成程序缩排的好习惯。在书写程序时,可以采用Tab键手工对程序进行缩排,也可以通过编辑工具栏中的“凸出”和“缩进”命令进行编排。例如:

没有采用缩排的代码。

      01 Private Sub Command1_Click()
      02 Dim i,j As lnteger'定义两个整型变量
      03 For i=1 To 9    '用For循环打印9行内容
      04 j=1    '为变量j赋初值
      05 Do While j<=l  '用Do循环,打印每一列中的内容
      06 Print i;"*";j;"=";i*j,      '输出每一列的内容
      07 j=j+1 '增加行数
      08 Loop   '满足条件,继续内部循环
      09 Print    '打印空行,起换行作用
      10 Next i   '满足条件,继续外部循环
      11 End Sub

采用缩排的代码。

      01 Private Sub Command1_Click()
      02  Dim i,j As lnteger      '定义两个整型变量
      03   For i=1 To 9  '用For循环打印9行内容
      04    j=1 '为变量j赋初值
      05     Do While j<=l      '用Do循环,打印每一列中的内
      06      Print i;"*";j;"=";i*j, '输出每一列的内容
      07      j=j+1   '增加行数
      08     Loop      '满足条件,继续内部循环
      09    Print '打印空行,起换行作用
      10   Next i '满足条件,继续外部循环
      11 End Sub

对没有采用缩排格式的代码来说,读起来有点找不到“北”的感觉,在没有添加注释的情况下,只有一句一句进行分析才明白代码的最终目的是什么。而对采用缩排格式的代码来说,很清晰地就能分析出来,代码中主要分为内部循环和外部循环,其中内循环的作用和外循环的作用也一眼即可明了。

2.6 高手点拨

本节视频教学录像:2分钟

对于从未接触过Visual Basic的初学者来说,要想快速学好Visual Basic,就要从Visual Basic的语言基础开始循序渐进地学习。在Visual Basic的语言基础学习过程中要以下注意内容。

⑴ 标识符的定义规则。

⑵ 各种数据类型特点和作用。

⑶ 变量和常量的应用。

⑷ 运算符的作用和优先级。

作为初学者,只有对上述几点做到了然于胸,才能读懂和编写基本的程序。

2.7 实战练习

一、思考题

1. 用户自定义标识符的命名规则是什么?

2. 使用圆括号来指定优先级时有哪些优点?

二、上机题

交换两个变量的值,写出相应的语句。