文章目录
- VBA基本数据类型
- 示例代码
- 声明常量,运算符和表达式
- 内置函数
- 代码
- 可视化编程
- 判断语句
- 循环语句
- 窗体控件,窗体的加载卸载
- listbox,checkbox,combobox
VBA基本数据类型
一、基本数据类型
表3-1列出了VB使用的基本数据类型。
表3-1 VB 基本数据类型
数据类型 | 关键字 | 类型符 | 前缀 | 字节 | 范围 | |
数 值 型 | 整 型 | Integer | % | int | 2 | -32768~32767 |
长整型 | Long | & | lng | 4 | -2147483648~2147483647 | |
单精度型 | Single | ! | sng | 4 | 负数:-3.402823E38~1.401298E-45 正数:1.401298E-45~3.402823E38 | |
双精度型 | Double | # | dbl | 8 | 负数:-1.79769313486232D308~ -4.94065645841247D-324 正数:4.94065645841247D-324~ 1.79769313486232D308 | |
货币型 | Currency | @ | cur | 8 | -922337203685477.5808~ 922337203685477.5807 | |
字节型 | Byte | 无 | byt | 1 | 0~255 | |
日期型 | Date(time) | 无 | dtm | 8 | 01,01,100~12,31,9999 (00:00:00~23:59:59) | |
逻辑型 | Boolean | 无 | bln | 2 | True与False | |
字符型 | String | $ | str | 0~65535个字符 | ||
对象型 | Object | 无 | obj | 4 | 任何对象引用 | |
变体型 | Variant | 无 | vnt | 上述有效范围之一 |
基本数据类型是系统定义的标准数据类型,可以直接使用。分为6类:数值型,日期型,逻辑型,字符型和变体型。
(一)数值型数据
数值型数据分为整型和实型两类。整型数据分为整数和长整数,实型数据分为单精度和双精度数据。有时把货币型和字节型数据也归为数值型数据。
1.整数(Interger)。整数是不带小数点,范围在-32768~32767之间,在机器内使用2个字节存储的整数。在VB中数尾常加“%”表示整型数据,也可省略。如-34,78%。
2.长整数(Long)。长整数可以超过整数-32768~32767范围,可以是-2147483648~2147483647之间的不带小数点的整数,在机器内用4个字节存储。在VB中数尾常加:“&”表示长整型数据。如-334&,67785649&。整数(Interger)和长整数(Long)均用于保存整数,其可以是正整数、负整数或者0。例如:369、-369、+369均表示整数,而369.0就不是整数;-9993977、12345678均表示长整数,而123,456则是非法数。整型数的运算速度快、精确,且占用存储空间较小,但表示数的范围也较小。
3.单精度数(Single)。单精度数是带小数点的实数,有效数字为7位,在机器内用4个字节存储。通常以指数形式表示,指数部分用“E”或“e”表示。在VB中数尾常加“!”表示单精度数据,也可省略。如-234.78,45.56!,2.67e+3,-2.89E-2。单精度数有多种表示形式:±n.n(小数形式)、±n E ±m(指数形式)、 ±n.n E ±m (指数形式)。例如:123.45、0.12345E+3、123.45!都是同值的单精度数。如果某个数的有效数字位数超过7位,当把它定义为单精度变量时,超出的部分会自动四舍五入。
4.双精度数(Double)。双精度数也是带小数点的实数,有效数字为15或16位,在机器内用8个字节存储。通常以指数形式表示,指数部分用“D”或“d”表示。在VB中数尾常加“#”表示双精度数据,也可省略。如-374.778#,5.678D+2,-2.67e+3#。
5.货币型数据(Currency)。货币型数据是为是一种专门为处理货币而设计的数据类型,是一种特殊的小数。,它的精度要求较高,用8个字节存储,保留小数点右边4位和小数点左边15位,如果数据定义为货币型,且其小数点后超过4位,那么超过的部分自动四舍五入。在VB中数尾常加“@”表示货币型数据。如3.4@,565@。
6.字节型数据(Byte)。字节型数据用来存储二进制数,是范围在0~255之间的无符号整数,不能表示负数,在机器内用一个字节存储。Byte是从0-255的无符号类型,
在VB中,声明和使用数值型数据时,应注意以下几点:
(1)如果数据中包含小数,则应使用single、double或currency型。
(2)如果数据为二进制数,则使用byte数据类型。
(3)数值型数据都有一个有效范围值,程序中的数如果超出规定的范围,将会出现“溢出”信息。如小于范围的下限值,系统将按“0”处理,如大于上限值,则系统按上限值处理,并显示出错信息。
(4)所有数值变量可互相赋值。
(二)日期型数据(Date)
日期型数据是为表示日期设置的,在机器内用8个字节存储,表示从公元100年1月1日到公元9999年12月31日的日期,时间范围则从0点0分0秒到23点59分59秒即0:00:00~23:59:59。表示方法是以“#”括起来的字面上被认为是日期和时间的字符,例如:#04/10/2008#、#2004-08-10#、#September 1,2004#、#2004-9-10 13:30:15#。
(三)逻辑型数据(Boolean)
逻辑型数据是用来表示逻辑判断结果的,只有真(True)和假(False)两个值,在机器内用2个字节存储。若数据信息是“true/false”、“yes/no”、“on/off”信息,则可将它定义为Boolean 类型。逻辑数据转换成整型数据时,真转换为-1,假转换为0;其他类型数据转换为逻辑数据时,非0数转换为真,0转换为假。
(四)字符型数据
字符型数据是用双引号括起来的一串字符,用来定义一个计算机字符组成的序列。在机器中一个字符用1个字节存储。每个字符都以ASCII编码表示,因此在字符串中字母的大小写是有区别的。在默认字符状态下,它是变长字符串,也可以声明为定长字符串,变长字符串的最大长度为231-1个字符;定长字符串的最大长度为65535个字符。如果字符个数少于固定长度,自动用空格将不足部分补齐,否则会自动截去多余部分的字符。例如:“Visual Basic”、“赣南师院”、“123.456”、“everyone”、“”(空字符串)。
注意:
(1)“”表示空字符串,而“ ”表示的是有一个空格的字符串;
(2)如字符串中本身含有双引号,则用两个连续的双引号表示。例:表示字符串计算机”ABC,正确的表示形式为:“计算机””ABC”
(五)对象型数据(Object)
对象型数据主要以变量形式存在,可以引用应用程序中或某些其他应用程序中的对象。在机器内用4个字节存储。使用Set语句指定一个被声明为Object的变量去引用应用程序所识别的任何实际对象。例如:
Dim objDb As Object
Set objDb=OpenDatabase("c:\Vb6\student.mdb")
(六)变体型数据(Variant)
变体型是一种通用的,可变的数据类型,它可以表示以上任何一种数据类型。它是声明变量时的默认类型。Variant数据类型能够存储所有系统定义类型的数据。如果把它们赋予Variant变量,则不必在这些数据的类型间进行转换,VB会自动完成任何必要的转换。假设定义a为变体型变量,在变量a中可以存放任何类型的数据,例如:
a=“-BASIC”- -‘存放一个字符串
a=10 - ‘存放一个整数
a=20.5 -‘存放一个实数
a=#08/15/2003# ‘存放一个日期型数据
根据赋给a的值的类型不同,变量a的类型不断变化,这就是称之为变体类型的由来。当一个变量未定义类型时,VB自动将变量定义为Variant类型。
不同类型的数据在Variant变量中是按其实际类型存放的(例如将一个整数赋给a,在内存区中按整型数方式存放),用户不必作任何转换的工作,VB自动完成。可以通过VarType函数来检测变体型变量的实际数据类型,如表3-2所示。
表3-2 Variant变量的内部表示
符号常量 | 函数值 | 数值类型 |
V_Empty | 0 | Empty(未初始化) |
V_Null | 1 | Null(无有效数据) |
V_Integer | 2 | 整数 |
V_Long | 3 | 长整数 |
V_Single | 4 | 单精度浮点数 |
V_Double | 5 | 双精度浮点数 |
V_Currency | 6 | 货币值 |
V_Date | 7 | 日期 |
V_String | 8 | 字符串 |
V_Object | 9 | 对象 |
V_Error | 10 | 错误值 |
V_Boolean | 11 | 布尔值 |
V_Variant | 12 | Variant(只与变体中的数组一起使用) |
V_Object | 13 | 数据访问对象 |
V_Byte | 17 | 位值 |
V_Array | 8192 | 数组 |
二、自定义数据类型
VB不仅提供了系统定义的以上基本数据类型,也允许用户自己定义数据类型,它由若干个基本数据类型组成。自定义类型必须通过Type语句来声明。
格式:
Type数据类型名
元素名 As 类型名
元素名 As 类型名
元素名 As 类型名
…
End Type
其中,数据类型名为自定义数据类型名,元素名为自定义数据类型中的一个成员,类型名为上述基本类型名或自定义数据类型名。
例如:对于一个学生的“学号”、“姓名”、“性别”、“年龄”、“入学成绩”等数据,为了处理数据的方便,常常需要把这些数据定义成一个新的数据类型(如Student类型)。
Type Student
Xh As Sting
Xm As String*10 ‘长度为10
Xb As String
Nl As Integer
Score As Single
End Type
注意:自定义类型中的元素为字符型时,必须为定长字符串。
可以看出,自定义数据类型类似于C语言中的结构体形,因此通常把这种类型又称为记录型。
这样,就可以定义一个student类型的变量了。
Dim Estu As student ‘用变量,元素的形式引用各成员
示例代码
Sub jk()
Dim a% ' As Integer
Dim b As Long
a = 4
b = 56
C = a + b '整型加长整型结果是长整型
'MsgBox C
Dim x As Boolean
x = False
Dim d As String
d = "ddd"
'MsgBox d
Dim opartdoc As PartDocument
Set opartdoc = CATIA.ActiveDocument '给对象类型的变量赋值时,一定要加个se
End Sub
声明常量,运算符和表达式
不完整,其他待补充
Sub jk()
'Dim a As Integer
'a = 2
'Const PI = 3.1415926'常量const
'S = PI * a * a
'MsgBox S
m = MsgBox("hello", vbCritical, "欢迎") '注意前面加个m=,系统带的常量vbCritical
End Sub
mod运算是取模,也就是取余数。
逻辑运算符:
Sub jk()
'Dim a As Integer
'a = 5
'Const PI = 3.1415926'常量const
'S = PI * a * a
'MsgBox S
'm = MsgBox("hello", vbCritical, "欢迎") '注意前面加个m=,系统带的常量vbCritical
'Dim n As Integer
'n = a ^ 3
'n = 8 Mod a '取余数
'MsgBox n
'Dim a As String
'Dim b As String
'Dim c As String
'a = "hello"
'b = "catia"
'c = a & b & "love" '注意&前后有个空格
Dim a As Integer
Dim b As Integer
a = 4
b = 12
If (a <> 5) And (b > 8) Then '也可以加括号(a<b)或(3<10)
'注意逻辑判断不是a==4,而是a=4
'不等于用<>表示If a<> 4 Then
'逻辑与and
MsgBox "nihao"
End If
End Sub
内置函数
Function jkj()
m = Sin(0)
m = Sin(3.1415926 / 2) 'sin
n = Abs(-19) '取整数
j = Sqr(16) '开根号
End Function
插入一个frame,在userforme的Initialize函数中,对frame的caption属性进行修改,使其显示当前时间。注意不是动态的,只是启动时的时间
代码
Sub jk()
'Dim a As Integer
'a = 5
'Const PI = 3.1415926'常量const
'S = PI * a * a
'MsgBox S
'm = MsgBox("hello", vbCritical, "欢迎") '注意前面加个m=,系统带的常量vbCritical
'Dim n As Integer
'n = a ^ 3
'n = 8 Mod a '取余数
'MsgBox n
'Dim a As String
'Dim b As String
'Dim c As String
'a = "hello"
'b = "catia"
'c = a & b & "love" '拼接字符串注意&前后有个空格
'Dim a As Integer
'Dim b As Integer
'a = 4
'b = 12
'If (a <> 5) And (b > 8) Then '也可以加括号(a<b)或(3<10)
''注意逻辑判断不是a==4,而是a=4
''不等于用<>表示If a<> 4 Then
''逻辑与and
'MsgBox "nihao"
'End If
End Sub
Function jkj()
'm = Sin(0)
'm = Sin(3.1415926 / 2) 'sin
'n = Abs(-19) '取整数
'j = Sqr(16) '开根号
'Dim a As String
'a = " jklgsf "
'M = Left(a, 3) '取a的左侧的三个字符,同理Right(a,3)是取a的右侧的三个字符
'N = Len(a) '字符串的长度,包含空格
'N = LTrim(a) '字对字符串进行精简,删除左边的空格
'N = RTrim(a) '字对字符串进行精简,删除右边的空格
'
'MsgBox Now '当前时间,格式2021/4/26 7:22:35
'M = Date '格式#2022/5/27#
'
'Randomize '产生随机数的种子,如果不执行这个,则每次Rnd会产生同样的随机数
'M = Rnd '产生大于等于0,小于等于1的数
'N = Rnd * 10 '对Rnd进行加减乘除,产生其他范围的数,比如这个是0到10之间的数
'dos系统,windows系统可以执行的程序,都可以用shell函数来调用
ReturnValue = Shell("CALC.EXE", 1) '打开系统自带的计算器
End Function
可视化编程
caption属性,控件显示的名称标题
方法一:
方法二:
复制相同的控件,按住control向右拖。加法器:
判断语句
Sub jk()
a = 8
If a > 90 Then
MsgBox "优秀"
ElseIf a <= 90 And a > 80 Then
MsgBox "良好"
Else
MsgBox "差"
End If
End Sub
循环语句
's = 0
'For i = 1 To 100 Step 2 '每隔2个执行一次
's = s + i
'Next
'MsgBox s
s = 0
n = 1
'Do While n <= 100 '当n<=100时执行
Do Until n > 100 '执行,直到n>100则停止
s = s + n
n = n + 1
Loop
MsgBox s
窗体控件,窗体的加载卸载
卸载
另外一种注释的方式
':Rem是一种注释的方式
Unload Me: Rem 卸载窗体
方便管理,可以将一些控件放在一个frame里
a = InputBox("请您输入一个数值") '人机交互输入,a等于输入的值,为string类型
单选控件:optionButton
所有的optionButton我们只能激活一个
编程的代码用的是name属性,而caption仅仅是控件显示的文字
防止搞混,最好设置成一样
listbox,checkbox,combobox
checkbox可以同时选择多个,可以和逻辑与搭配,不同选则组合产生不同效果
listbox
combobox直接鼠标点击编辑。添加默认的显示
添加其他控件,Toolbox的空白处右键
一、基本数据类型
表3-1列出了VB使用的基本数据类型。
表3-1 VB 基本数据类型
数据类型 | 关键字 | 类型符 | 前缀 | 字节 | 范围 | |
数 值 型 | 整 型 | Integer | % | int | 2 | -32768~32767 |
长整型 | Long | & | lng | 4 | -2147483648~2147483647 | |
单精度型 | Single | ! | sng | 4 | 负数:-3.402823E38~1.401298E-45 正数:1.401298E-45~3.402823E38 | |
双精度型 | Double | # | dbl | 8 | 负数:-1.79769313486232D308~ -4.94065645841247D-324 正数:4.94065645841247D-324~ 1.79769313486232D308 | |
货币型 | Currency | @ | cur | 8 | -922337203685477.5808~ 922337203685477.5807 | |
字节型 | Byte | 无 | byt | 1 | 0~255 | |
日期型 | Date(time) | 无 | dtm | 8 | 01,01,100~12,31,9999 (00:00:00~23:59:59) | |
逻辑型 | Boolean | 无 | bln | 2 | True与False | |
字符型 | String | $ | str | 0~65535个字符 | ||
对象型 | Object | 无 | obj | 4 | 任何对象引用 | |
变体型 | Variant | 无 | vnt | 上述有效范围之一 |
基本数据类型是系统定义的标准数据类型,可以直接使用。分为6类:数值型,日期型,逻辑型,字符型和变体型。
(一)数值型数据
数值型数据分为整型和实型两类。整型数据分为整数和长整数,实型数据分为单精度和双精度数据。有时把货币型和字节型数据也归为数值型数据。
1.整数(Interger)。整数是不带小数点,范围在-32768~32767之间,在机器内使用2个字节存储的整数。在VB中数尾常加“%”表示整型数据,也可省略。如-34,78%。
2.长整数(Long)。长整数可以超过整数-32768~32767范围,可以是-2147483648~2147483647之间的不带小数点的整数,在机器内用4个字节存储。在VB中数尾常加:“&”表示长整型数据。如-334&,67785649&。整数(Interger)和长整数(Long)均用于保存整数,其可以是正整数、负整数或者0。例如:369、-369、+369均表示整数,而369.0就不是整数;-9993977、12345678均表示长整数,而123,456则是非法数。整型数的运算速度快、精确,且占用存储空间较小,但表示数的范围也较小。
3.单精度数(Single)。单精度数是带小数点的实数,有效数字为7位,在机器内用4个字节存储。通常以指数形式表示,指数部分用“E”或“e”表示。在VB中数尾常加“!”表示单精度数据,也可省略。如-234.78,45.56!,2.67e+3,-2.89E-2。单精度数有多种表示形式:±n.n(小数形式)、±n E ±m(指数形式)、 ±n.n E ±m (指数形式)。例如:123.45、0.12345E+3、123.45!都是同值的单精度数。如果某个数的有效数字位数超过7位,当把它定义为单精度变量时,超出的部分会自动四舍五入。
4.双精度数(Double)。双精度数也是带小数点的实数,有效数字为15或16位,在机器内用8个字节存储。通常以指数形式表示,指数部分用“D”或“d”表示。在VB中数尾常加“#”表示双精度数据,也可省略。如-374.778#,5.678D+2,-2.67e+3#。
5.货币型数据(Currency)。货币型数据是为是一种专门为处理货币而设计的数据类型,是一种特殊的小数。,它的精度要求较高,用8个字节存储,保留小数点右边4位和小数点左边15位,如果数据定义为货币型,且其小数点后超过4位,那么超过的部分自动四舍五入。在VB中数尾常加“@”表示货币型数据。如3.4@,565@。
6.字节型数据(Byte)。字节型数据用来存储二进制数,是范围在0~255之间的无符号整数,不能表示负数,在机器内用一个字节存储。Byte是从0-255的无符号类型,
在VB中,声明和使用数值型数据时,应注意以下几点:
(1)如果数据中包含小数,则应使用single、double或currency型。
(2)如果数据为二进制数,则使用byte数据类型。
(3)数值型数据都有一个有效范围值,程序中的数如果超出规定的范围,将会出现“溢出”信息。如小于范围的下限值,系统将按“0”处理,如大于上限值,则系统按上限值处理,并显示出错信息。
(4)所有数值变量可互相赋值。
(二)日期型数据(Date)
日期型数据是为表示日期设置的,在机器内用8个字节存储,表示从公元100年1月1日到公元9999年12月31日的日期,时间范围则从0点0分0秒到23点59分59秒即0:00:00~23:59:59。表示方法是以“#”括起来的字面上被认为是日期和时间的字符,例如:#04/10/2008#、#2004-08-10#、#September 1,2004#、#2004-9-10 13:30:15#。
(三)逻辑型数据(Boolean)
逻辑型数据是用来表示逻辑判断结果的,只有真(True)和假(False)两个值,在机器内用2个字节存储。若数据信息是“true/false”、“yes/no”、“on/off”信息,则可将它定义为Boolean 类型。逻辑数据转换成整型数据时,真转换为-1,假转换为0;其他类型数据转换为逻辑数据时,非0数转换为真,0转换为假。
(四)字符型数据
字符型数据是用双引号括起来的一串字符,用来定义一个计算机字符组成的序列。在机器中一个字符用1个字节存储。每个字符都以ASCII编码表示,因此在字符串中字母的大小写是有区别的。在默认字符状态下,它是变长字符串,也可以声明为定长字符串,变长字符串的最大长度为231-1个字符;定长字符串的最大长度为65535个字符。如果字符个数少于固定长度,自动用空格将不足部分补齐,否则会自动截去多余部分的字符。例如:“Visual Basic”、“赣南师院”、“123.456”、“everyone”、“”(空字符串)。
注意:
(1)“”表示空字符串,而“ ”表示的是有一个空格的字符串;
(2)如字符串中本身含有双引号,则用两个连续的双引号表示。例:表示字符串计算机”ABC,正确的表示形式为:“计算机””ABC”
(五)对象型数据(Object)
对象型数据主要以变量形式存在,可以引用应用程序中或某些其他应用程序中的对象。在机器内用4个字节存储。使用Set语句指定一个被声明为Object的变量去引用应用程序所识别的任何实际对象。例如:
Dim objDb As Object
Set objDb=OpenDatabase("c:\Vb6\student.mdb")
(六)变体型数据(Variant)
变体型是一种通用的,可变的数据类型,它可以表示以上任何一种数据类型。它是声明变量时的默认类型。Variant数据类型能够存储所有系统定义类型的数据。如果把它们赋予Variant变量,则不必在这些数据的类型间进行转换,VB会自动完成任何必要的转换。假设定义a为变体型变量,在变量a中可以存放任何类型的数据,例如:
a=“-BASIC”- -‘存放一个字符串
a=10 - ‘存放一个整数
a=20.5 -‘存放一个实数
a=#08/15/2003# ‘存放一个日期型数据
根据赋给a的值的类型不同,变量a的类型不断变化,这就是称之为变体类型的由来。当一个变量未定义类型时,VB自动将变量定义为Variant类型。
不同类型的数据在Variant变量中是按其实际类型存放的(例如将一个整数赋给a,在内存区中按整型数方式存放),用户不必作任何转换的工作,VB自动完成。可以通过VarType函数来检测变体型变量的实际数据类型,如表3-2所示。
表3-2 Variant变量的内部表示
符号常量 | 函数值 | 数值类型 |
V_Empty | 0 | Empty(未初始化) |
V_Null | 1 | Null(无有效数据) |
V_Integer | 2 | 整数 |
V_Long | 3 | 长整数 |
V_Single | 4 | 单精度浮点数 |
V_Double | 5 | 双精度浮点数 |
V_Currency | 6 | 货币值 |
V_Date | 7 | 日期 |
V_String | 8 | 字符串 |
V_Object | 9 | 对象 |
V_Error | 10 | 错误值 |
V_Boolean | 11 | 布尔值 |
V_Variant | 12 | Variant(只与变体中的数组一起使用) |
V_Object | 13 | 数据访问对象 |
V_Byte | 17 | 位值 |
V_Array | 8192 | 数组 |
二、自定义数据类型
VB不仅提供了系统定义的以上基本数据类型,也允许用户自己定义数据类型,它由若干个基本数据类型组成。自定义类型必须通过Type语句来声明。
格式:
Type数据类型名
元素名 As 类型名
元素名 As 类型名
元素名 As 类型名
…
End Type
其中,数据类型名为自定义数据类型名,元素名为自定义数据类型中的一个成员,类型名为上述基本类型名或自定义数据类型名。
例如:对于一个学生的“学号”、“姓名”、“性别”、“年龄”、“入学成绩”等数据,为了处理数据的方便,常常需要把这些数据定义成一个新的数据类型(如Student类型)。
Type Student
Xh As Sting
Xm As String*10 ‘长度为10
Xb As String
Nl As Integer
Score As Single
End Type
注意:自定义类型中的元素为字符型时,必须为定长字符串。
可以看出,自定义数据类型类似于C语言中的结构体形,因此通常把这种类型又称为记录型。
这样,就可以定义一个student类型的变量了。
Dim Estu As student ‘用变量,元素的形式引用各成员