第 2章 Visual Basic语言基础
学习目标:
? 掌握 VB的编码规则
? 了解 VB的数据类型
? 掌握变量, 常量的声明和使用
? 掌握运算符和表达式的使用
? 掌握 VB数据的输入与输出
? 了解 VB的内部函数
第 2章 Visual Basic语言基础
教学内容:
2.1 VB编码 规则
2.2 VB的数据类型
2.3 变量与常量
2.4 运算符与表达式
2.5 数据的输入输出
2.6 VB的常用内部函数
2.1 VB编码规则
[例 2.1] 单击窗体可输出内容交换后的 a变量和 b变量的值 。
Private Sub Form_Click()
Dim a As Integer,b As Integer,intTemp As Integer '声明变量
a = 10 '变量赋值
b = 20
Print "a变量和 b变量内容交换前,"; a; b
'变量交换
intTemp = a
a = b
b = intTemp
Print "a变量和 b变量内容交换后,"; a; b
End Sub
返回目录
2.1 VB编码规则 - 语句书写规则
? 语句输入时不区分大小写, 一条语句通常写在一行中 。
? 一行中若输入多条语句, 需用,,”分隔 。 例如,
intTemp = a, a = b, b = intTemp
? 长语句可通过续行符, _”(空格后加下划线 )分行 。 例如,
Print "a变量和 b变量内容交换前,"; a; b
可分成以下两行输入:
Print "a变量和 b变量内容交换前,"; _
a; b
? 单引号后面的内容为注释, 可放在一行语句的最后, 或单
独占据一行 。
? 数值前加上前缀 &H和 &0分别表示十六进制和八进制数 。
返回目录
2.1 VB编码规则 - 标识符命名规则
标识符,变量, 常量, 类型, 过程, 函数, 以及其它对
象的名字 。
命名规则,
? 由字母, 汉字, 数字或下划线组成, 第一个字符必须
是字母或汉字 。
? 长度不超过 255个字符 。 其中, 窗体, 控件和模块的标
识符长度不能超过 40个字符 。
? 不要与 VB中的关键字同名
? 最好能, 见名知义,
返回目录
2.1 VB编码规则 - 赋值语句
语法格式,[Let] 变量名 =表达式
作用:变量赋值或属性设置 。 例如:
Pi = 3.14159
strTemp=“Hello!”
Label1.Caption =“VB程序设计示例,
Form1.BackColor = vbWhite
说明:
? 只有当表达式的类型与变量的数据类型兼容时, 该表达式的值才
可以赋给相应的变量或属性 。
? 不管表达式是什么类型, 都可以赋给 Variant(变体类型 )变量 。
返回目录
2.2 VB的数据类型 - 基本数据类型
VB提供的基本数据类型见教材表 2.1。
1,数值型
? 字节型 (Byte):存 放 无符号整数, 取值范围 0 ~ 255
? 整型,Integer和 Long,存放整数
? 浮点型 (实型 ):单精度型 (Single)和双精度型 (Double)
存放带小数的数值
例:
单精度数 -6.25E8 表示 -6.25× 108
双精度数 7.878D-6 表示 7.878× 10- 6
? 货币型 (Currency):一种精确的定点类型数据
支持 15位整数和 4位小数
返回目录
2.2 VB的数据类型 - 基本数据类型
2,字符串型 (String)
? VB字符串是由 双引号 括起来的一串字符
? 不含任何字符 (长度为 0)的字符串称为空串
? String型变量 有变长和定长之分, 例:
Dim NameA As String '声明变长字符串变量
Dim NameB As String * 20 '声明定长字符串变量
3,逻辑型 (Boolean)
逻辑型 数据的取值,True或 False,例:
Dim BoolR As Boolean
BoolR = 6>8
Print BoolR '输出, False
返回目录
2.2 VB的数据类型 - 基本数据类型
4,日期型 (Date)
? 日期型变量可存放日期和时间
? 日期型常数的表现形式:
#mm/dd/yyyy hh:mm:ss#
"mm/dd/yyyy hh:mm:ss"
? 日期型数据的输出格式取决于系统的区域设置
例,
Dim d As Date '声明日期型变量 D
D = # 10/5/2002 # '日期型变量赋值
Print D ?输出日期型变量的值
返回目录
2.2 VB的数据类型 - 基本数据类型
5,对象型 (Object)
? 声明 对象 变量后, 用 Set语句指定实际引用的对象
例, 窗体上有命令按钮 Command1,执行如下语句,
可将该按钮的显示文字改为 OK
Dim a As Object '声明 a为对象型变量
Set a = Command1 '指定 a引用 Command1命令按钮
a.Caption =“OK” '与 Command1.Caption等价
6,变体型 (Variant)
变体,在程序运行期间可存放不同类型的数据 。 例:
Dim X 'X缺省为 Variant类型
X = "17" 'X被赋予字符串 "17"
X = X – 2 'X被赋予数值 15
X = "A" & X 'X被赋予字符串 "A15"
返回目录
2.2 VB的数据类型 - 自定义数据类型
? 在模块的, 通用, 声明段声明
[Private | Public] Type 数据类型名
元素名 1 As 类型名
元素名 2 As 类型名
……
End Type
Public:声明的类型在工程中所有模块的任何过程中可用
Private:声明的类型只能在当前模块中使用
? 声明自定义数据类型后, 可使用该类型 。 例
Dim studTemp As student '声明为 student类型变量
? 访问自定义数据类型的变量,变量名,成员名, 如:
studTemp.id=“030005”
studTemp.xm=“李斌,
返回目录
2.3 变量与常量 - 变量
1,变量的声明
? 通过类型符号:直接在变量名后面加上类型符号
S& = 10 ?声明 S为长整型变量
? 使用声明语句 Dim 变量名 [As 类型 ]
Dim 变量名 [类型符 ]
例如, 下面两条声明语句的效果相同:
Dim a As Integer,b As Long,c As Single,d As Double
Dim a%,b&,c!,d#
? 若省略类型说明, 被声明的变量为 Variant型 。 例如:
Dim a,b 'a和 b均为变体型变量
Dim S1,S2 As String*6 'S1为变体型变量,S2为定长字符串
返回目录
见表 2.2
2.3 变量与常量 - 变量
2,变量的隐式及显式声明
? 不声明就用的变量被隐式声明为 Variant,初值 Empty
? 强制进行变量的显式声明
?,通用, 声明段中加上语句,Option Explicit
?“工具 → 选项, →, 编辑器,
返回目录
对新模块起作用
遇到未经声明的变
量包括输错的变量,
系统会发出错误警

2.3 变量与常量 - 变量
3,变量的有效范围
(1) 局部变量:在一个 过程内部声明 的变量
有效范围限于声明它的过程
? 自动变量,用 Dim声明, 变量值只在过程执行期间才存在
? 静态变量:用 Static声明, 变量值在程序运行期间一直存在
[例 2.2] 统计单击窗体的次数
Private Sub Form_Click()
Static intCount As Integer
intCount = intCount+1
Print intCount
End Sub
返回目录
单击窗体
3 次
将 Static改为 Dim
2.3 变量与常量 - 变量
(2) 模块变量:, 通用, 声明段用 Private或 Dim语句声明
可被该模块中的任何过程所访问
[例 2.3]
Private a As Integer,b As Integer '声明模块变量
Private Sub Command1_Click()
Dim intTemp As Integer '声明局部变量
a = 10, b = 20
Print "a和 b内容交换前,"; a; b
intTemp = a,a = b,b = intTemp '变量交换
End Sub
Private Sub Command2_Click()
Print, Print "a和 b内容交换后,"; a; b
End Sub
返回目录
2.3 变量与常量 - 变量
(3) 全局变量,标准模块的声明段用 Public或 Global声明
有效范围是整个工程的所有模块
说明:
? 标准模块:只含有程序代码的文件, 扩展名为,bas
? 添加标准模块:, 工程 → 添加模块,
? 如果在窗体模块的, 通用,
返回目录
声明段用 Public声明变量,
其它模块可通过如下方式
引用该变量:
窗体模块名,变量名
2.3 变量与常量 - 常量
1,内部常量
由应用程序和控件提供 。 例如:
Form1.BackColor = vbBlue ?vbBlue是表示蓝色的内部常量
查看系统预定义常量:, 视图 → 对象浏览器,
返回目录
2.3 变量与常量 - 常量
2,符号常量 (自定义常量 )
? 命名:遵循标识符命名的规则
? 声明格式:
[Public|Private] Const常量名 [As 类型 ] = 表达式
例:
Const conMax As Integer = 9 '声明 Integer型常量
Const conDate= #10/5/2002# '声明 Date型常量
Const CodeName = "ASCII" '声明 String型常量
? 有效范围:局部常量, 模块常量, 全局常量
? 声明常量的表达式中不能出现函数调用和循环引用
例:错误的常量声明
Const conS = Sqr(10)
Const conA = conB +10,conB = conA +1
返回目录
2.4 运算符与表达式 - 运算符
1,算术运算符
返回目录
优先级 运算 运算符 举例 结果


乘方 ^ 2 ^ 3 8
取负 - - 2 ^ 3 - 8
乘、除 * / 5 * 3 / 2 7.5
整除 \ 5 * 3 \ 2 7
求余 Mod 5 * 3 Mod 2 1
加、减 + - 10 - 3 + (-2) 5
2.4 运算符与表达式 - 运算符
2,字符串运算符
?运算符,&和 +
例:
VB =,Visual” +,Basic” '连接为字符串, Visual Basic”
label1.Caption = "第 " & Str(N) & "条记录 "
'Str为数值型转字符型函数 。 若 N为 1,标签上显示, 第 1条记录,
?说明:
? 使用 +号, 要求连接的两个表达式均为字符串型
? 使用 &号, 连接的两个表达式可以为任何类型, 但结果为字
符串型, 如
,当前日期, & #10/8/2002#
返回目录
2.4 运算符与表达式 - 运算符
3,关系运算符
返回目录
运 算 运算符 举 例 结 果
等于 = "Hello" = "hello" False
不等于 <> "Hello" <> "hello" True
大于 > "Hello" > "hello" False
大于等于 >= 45 + 10 >= 55 True
小于 < "a" < "ab" True
小于等于 <= 45 + 10 <= 55 True
比较对象变量 Is
字符串匹配 Like "F" Like "[A-Z]" True
Is:判定两个 Object类型的变量是否引用同一个对象
Like:判定左边的字符串是否与右边的字符串匹配
2.4 运算符与表达式 - 运算符
4,逻辑运算符
常用,
Not,And, Or
? Not:表达式数为 True时, 结果为 False;反之亦然 。
例如, Not (4 > 5),结果为 True
? And:两个表达式均为 True时, 结果为 True
例如, (4 > 5) And (8 > 7),结果为 False
? Or:两个表达式均为 False时, 结果为 False
例如, (4 > 5) Or (8 > 7),结果为 True
返回目录
X Y Not Y X And Y X Or Y
False False True False False
False True False False True
True False True False True
True True False True True
2.4 运算符与表达式 - 表达式
? 表达式:用运算符和圆括号将常量, 变量, 函数和常数
连接起来组成的有意义的式子 。
如, 数值表达式 Cos (180 * Pi / 180 ) * 100
逻辑表达式 ( N >= 0 ) And ( N Mod 2 <> 0 )
? 运算优先顺序 (从高到低 ):
函数 → 算术运算 (乘方 → 取负 → 乘 /除 → 整除 → 求余 → 加 /减 )
→ 字符串运算符 → 关系运算符 → 逻辑运算符 (Not→And→Or)
? 用括号可以改变运算顺序
? 乘方和负号相邻时, 取负优先 。
例如,2 ^ -2 的结果是 0.25,相当于 2^(-2)
返回目录
2.5 数据的输入输出 - 数据输出
1,Print方法
?功能:在窗体 /立即窗口 /图片框 /打印机上输出信息
?格式,[对象,] Print [输出项 ] [,| ; ]
? [对象 ]缺省为当前窗体, [输出项 ]缺省则打印一空白行
? 输出项之间可用分号或逗号分隔:使用分号, 其后的输出项
紧接着前一个输出项输出;使用逗号, 其后的输出项在下一
个输出区输出 。
? 两个输出区默认相隔 14列
? 各输出项表示要打印的表达式, 组成
[Spc(n) | Tab(n)] 表达式
Spc(n):指定在输出之前插入 n个空白字符
Tab(n):指定在第 n列上输出
返回目录
2.5 数据的输入输出 - 数据输出
例,
Private Sub Form_Click()
Print
Print Tab(15); "*"
Print Tab(13); "*"; Spc(1); "*"; Spc(1);"*“
End Sub
返回目录
2.5 数据的输入输出 - 数据输出
2,格式输出函数
?功能:使数值, 日期或字符串按指定的格式输出
?格式,Format(expression [,format])
expression-需要格式化输出的表达式
format - 输出的格式模式
返回目录
2.5 数据的输入输出 - 数据输出
3,MsgBox函数
?功能:创建预定义的消息对话框
?常用格式,MsgBox(prompt[,buttons] [,title])
prompt-字符串, 指定消息框中显示的信息
Buttons-指定消息框中显示的按钮数目及形式, 图标样式等,
缺省值为 vbOKOnly
常用的设置值见教材表 2.6
Title-指定消息框的标题, 缺省值为工程名
?用户所选按钮的返回值 (见教材表 2.7)可作为继续执行
程序的依据 。
返回目录
2.5 数据的输入输出 - 数据输出
[例 2.4]
Private Sub Form_Click()
prompt = "真的新增该条记录吗 "
answer = MsgBox(prompt,vbOKCancel,"Add Record")
If answer = vbOK Then Debug.Print "您选择的是, 确定, 按钮 "
If answer = vbCancel Then Debug.Print "您选择的是, 取消, 按钮
"
End Sub
返回目录
2.5 数据的输入输出 - 数据输出
说明:
?如果消息框中显示的信息过长, 可使用回车符 Chr(13)
和换行符 Chr(10)
?如果不需要返回值, 可使用没有括号的 MsgBox语句:
MsgBox prompt[,buttons] [,title]
例, …… ……
Msg = "非法的数据输入 !" & Chr(13) & Chr(10) & "请重新输
入 "
Title = "出错提示 "
MsgBox Msg,vbCritical,Title
…… ……
返回目录
2.5 数据的输入输出 - 数据输入
? 功能:生成输入对话框
? 常用格式:
InputBox(prompt[,title] [,default] [,xpos] [,ypos])
prompt-字符串, 指定输入框中显示的信息
Title-指定输入框的标题, 缺省值为工程名
Default-字符串, 指定文本框中的初始内容, 缺省为空 。
xpos和 ypos-数值表达式, 成对出现或者成对缺省,
指定输入框左上角相对于屏幕的位置 。
? InputBox函数一次只能输入一个值
返回目录
2.5 数据的输入输出 - 数据输入
[例 2.5]
Private Sub Form_Click()
Dim Username
Username = InputBox("输入姓名后单击 [确定 ]","输入 ")
Print Username
End Sub
返回目录
2.6 常用内部函数 - 数学函数
?常用数学函数见教材表 2.8
?几点说明:
? 由基本函数可导出所需的数学函数
例如, Log(X)/Log(N)可求出以 N为底的对数
? 对 Rnd[(N)],N的值决定了 Rnd生成随机数的方式
? N<0:以 N为随机种子, 每次返回相同的随机数
? N>0或者缺省:产生序列中的下一个随机数
? N=0:返回最近生成的随机数
返回目录
例如:随机产生 1-selenum之间的数
Randomize (Timer)
Selenum = 7
Rn = Int((Selenum) * Rnd + 1)
调用 Rnd之前,使用
Randomize语句可产生不
相同的随机数数列
2.6 常用内部函数 - 字符串函数
?常用字符串函数见教材表 2.9
?几点说明:
? 表 2.9只对常用的字符串函数进行了简单的说明
? 使用 Str函数将数字转成字符串时, 字符串的首位
一定是空格或是正负号 。 例如,
S1 = Str(67) '返回 " 67"
S2 = Str(-67.5) '返回 "-67.5"
? 使用 Val函数时, 如果遇到不能识别为数字的字符,
则停止转换 。 例如,
Val(“24 and 57”) '返回 24
Val("not 57") '返回 0
返回目录
2.6 常用内部函数- 日期函数
常用的日期函数见下表 。 其中, D表示日期类型表达式 。
返回目录
函数名 功能简述 示例
Date/Time 返回系统日期或时间 Date'返回系统当前日期
Now 返回系统日期和时间 略
Year/
Month/Day (D) 返回年, 月, 日 Year(Now) '返回 2003
WeekDay(D) 返回星期几 WeekDay(Now) '返回 3
Hour(time) 返回小时数 Hour(Time) '返回 21
上述示例的当前日期时间是 2003年 3月 18号、星
期三、晚上 9点 10分。
2.6 常用内部函数- 类型转换函数
作用,强制将一个表达式转换成某种特定数据类型
返回目录
函数名 返回类型 函数名 返回类型
CBool(X) Boolean CInt(X) Integer
CDate(X) Date CLng(X) Long
CCur(X) Currency CSng(X) Single