一、VB6.0基本语法
1、基本数据类型
类型名称 | 关键字 | 字节数 | 取值范围及用途 |
---|---|---|---|
字节型 | Byte | 1 | 0~255,用于存储二进制数据,如图像、声音等 |
整型 | Integer | 2 | -32768~32767,用于表示没有小数点的数据 |
长整型 | Long | 4 | -2147483648~2147483647,当使用整型不足以表示数据时,使用长整型 |
单精度浮点型 | Single | 4 | 负数时: -3.402823E38~-1.401298E-45;正数时:1.401298E-45~3.402823E38 |
双精度浮点型 | Double | 8 | 负数时: -1.79769313486232E308~-4.94065645841247E-324;正数时:4.94065645841247E-324~1.79769313486232E308 |
货币型 | Currency | 8 | -922337203685477.5808~922337203685477.5807,用于精确计算,整数部分有15位数字,小数部分有4位数字 |
无符号整型 | Decimal | 14 | 无小数点时:±79228162514264337593543950335,小数点右边有28位数时:±7.9228162514264337593543950335;最小的非零值:±0.0000000000000000000000000001" |
字符型(变长) | String | 10字节加字符串长度 | 0到大约20亿 |
字符型(定长) | String | 字符串长度 | 1到大约65,400 |
日期型 | Date | 8 | 100年1月1日到9999年12月31日 |
逻辑型 | Boolean | 2 | True或False |
对象型 | Object | 4 | 任何Object引用 |
变体型(数字) | Variant | 16 | 任何数字值,最大可达Double的范围 |
变体型(字符) | Variant | 22个字节加字符串长度 | 与变长 String 有相同的范围 |
用户自定义 | 利用Type | 所有元素所需数目 | 每个元素的范围与它本身的数据类型的范围相同 |
2、基本常量
p.s.
- 用户自定义常量:用 Const 语句声明的常量。
以下是正确的常量声明:
Const Pi = 3.14159265358979 '声明了常量 Pi,其值为 3.14159265358979
Public Const MaxPlanets As Integer = 9 '声明了公用整型常量 MaxPlanets
Const ReleaseDate = #1/1/95#
Const CodeName = "Enigma"
Public Const Pi = 3.14, MaxPlanets = 9,WorldPop = 6E+09
Const Pi2 = Pi * 2
等号右边的表达式除数字或字符串外,也可以是运算结果为数字或字符串的表达式(表
达式中不能包含函数调用)。
和变量声明一样,用 Const 语句声明的常量也有作用范围。规则如下:
(1)在过程内部声明的常量,仅存在于过程中。 (2)在模块声明段中声明的常量,对模块中所有过程都有效,但对模块外任何代码都无效。 (3) 在标准模块声明段中声明的常量, 在整个应用程序中有效, 可在 Const 前面放置 Public
关键字,但在窗体模块或类模块中不能声明 Public 常量。
3、变量
(1)变量必须以字母开头,由字母、汉字、数字或下划线组成。
(2)变量的长度不得超过 255 个字符。
(3)变量名不能使用 VB 的关键字。
(4)在同一个范围(即可以引用变量的域,如一个过程、一个窗体等)内,变量名必须 是唯一的
(5)为了增加程序的可读性,可在变量名前加一个类型前缀,以表示该变量的数据类型。
如果要强制 在 VB 中必须先声明变量才可以使用,可以在代码窗口的首行添加以下一行代码:
Option Explicit
声明变量的语法格式:Dim 变量名 [As 类型]
说明:
(1)Dim 是变量定义的关键字 (还可能是变量作用范围修饰关键字 Public 或 Private, “作
用范围修饰关键字”将在变量作用范围讨论)。 (2)[As 类型名]是可选项。As 可以解读为“为” ,如果省略该语句,变量默认为 Variant
(变体)类型。Variant 数据类型在不同场合可代表不同的数据类型。
(3)变量名:必须满足变量命名规则。
通过 Dim 语句进行变量的声明,可以事先将变量通知程序。
例如:
Dim strName As String '定义字符串类型变量
4、数组
数组中,每一个元素的名称相同, 索引(下标)连续,且具有相同的数据类型。数组单元通过数组的索引(下标)引用,VB6 数组的下标默认从 0 开始。例如,a(0)表示数组 a 的第 1 个元素,a(1)表示数组 a 的第 2 个元 素,依此类推。
'一维数组
Dim arr(4) As Integer
'多维数组的定义类似,维数之间使用逗号分隔。例如,以下语句定义了一个三维数组:
Dim mulArr (3, 1 To 10, 1 To 15)
Public 用来声明可以在工程中的任何模块或过程中使用的数组;Private用来声明模块级数组;Dim用来声明普通局部数组;Static用来声明静态局部数组。
动态数组:
Preserve:可选。当改变原有数组维数大小时,用Preserve保持原有数组中的数据。
ReDim:必需。ReDim用来重新定义数组,只能在过程中使用。
5、常用控制结构
5.1 选择结构
VB中选择结构为:
其中,If … Then…;End If;是必须
5.2 循环结构
VB中循环包括:
- Whlie
While<>
Wend
- For …To …
For<变量>=<开始值>To<结束值>[Step<步长>]
...
IF<>Then<>
Exit For
End If
Next 变量
- For Each…Next
For Each<变量>In<数组或集合>
...
IF<>Then<>
Exit For
End If
Next 变量
- While型Do…Loop语句
当While后的表达式结果为True时,执行循环体,直到表达式值为False时退出循环。
语法1:
Do While<表达式>
...
IF<>Then<>
Exit Do
Loop
语法2:
Do
...
IF<>Then<>
Exit Do
Loop While<表达式>
- Until型Do…Loop语句
当Until后的表达式结果为True时退出循环,当Until后的表达式结果为False时执行循环体。
Do Until<表达式>
...
IF<>Then<>
Exit Do
Loop
语法2:
Do
...
IF<>Then<>
Exit Do
Loop Until<表达式>
5.3 With语句
With 语句用于定制一个对象或读者自定义类型。With 语句不仅方便读者定制对象,也可增强代码的可读性使得程序结构更加清晰。With语句的语法如下。
With<对象>
....
End With
例如
6、过程和函数
6.1 sub
sub语法为:
● Public:可选。表示该Sub过程为全局过程,应用程序中的所有模块都可访问。
● Private:可选。表示该Sub过程为模块级过程,只能在声明的模块中被访问。
● Static:可选。表示该Sub过程的局部变量为静态。
● 过程名:必需。用于标识该Sub的名称。
● 参数列表:可选。用于表示该Sub过程中所传递的参数。
● 语句组:可选。该Sub过程所要完成或执行的功能。
例如:
在调用Sub过程时,建议采用Call形式。使用Call形式可以使Sub过程调用更加清楚,同时也增加了程序的可读性。
6.2 Function
与Sub过程不同的是,Function过程是一个具有数据类型和返回值的过程。
例如:
以下摘自百度知道:
function是函数,sub是子程序,都可以传递参数,但函数有返回值,子程序没有 function 可以用自身名字返回一个值,sub需定义别的变量,用传址方式传回值。 Sub 过程与Function 过程的区别:
1. Sub过程定义时无需定义返回值类型,而Function 过程一般需要用“As 数据类型” 定义函数返回值类型。
2. Sub过程中没有对过程名赋值的语句,而Function 过程中一定有对函数名赋值的语句。
3. 调用过程:调用 Sub 过程与 Function过程不同。调用 Sub 过程的是一个独立的语句,而调用函数过程只是表达式的一部分。Sub过程还有一点与函数不一样,它不会用名字返回一个值。但是,与 Function过程一样,Sub 过程也可以修改传递给它们的任何变量的值。
4. 调用 Sub 过程有两种方法: 以下两个语句都调用了名为 MyProc 的 Sub 过程。 Call MyProc(FirstArgument, SecondArgument) MyProc FirstArgument, SecondArgument
注意当使用 Call 语法时,参数必须在括号内。若省略 Call 关键字,则也必须省略参数两边的括号。
7. VB中的字符编码
VB6.0中,字符使用的是Unicode编码进行保存。
StrConv 函数的语法为:StrConv(待转换字串, 转换格式)
其中转换格式:
vbUnicode 将 Ansi 字串转换为 Unicode
vbFromUnicode 将 Unicode 字串转换为 Ansi
二、MsChart和MSFlexGrid图表实例
1、文件读取到表格
Public Sub Form_Load()
Open App.Path + "\result.csv" For Input As #1 '程序路径下的data.txt文件
i = 1
Line Input #1, tmp
Do While Not EOF(1)
Line Input #1, tmp
If tmp <> "" Then
arr = Split(tmp, ",") '这里是以空格为分隔的,如果是逗号就用split(str,",")
If UBound(arr) > 0 Then
With MSFlexGrid1
.rows = 51
For j = 0 To .Cols - 1
.Row = i
.Col = j
.Text = arr(j)
.TextMatrix(j, 1) = Format$(arr(1), "c")
.ColAlignment(j) = 3
Next j
End With
If i = 50 Then Exit Do
i = i + 1
End If
End If
Loop
Close #1
2、VB 6.0绘制MsChart横纵坐标
With Chart1
.TitleText = "TitleText "
.ChartData = Data
.SeriesType = 6
.Plot.Axis(VtChAxisIdY).AxisTitle.Text = "Y"
.Plot.Axis(VtChAxisIdY).ValueScale.Auto = True
.Plot.Axis(VtChAxisIdY2).AxisTitle.Text = "Y2"
.Plot.Axis(VtChAxisIdY2).ValueScale.Auto = True
.Plot.Axis(VtChAxisIdY2).AxisTitle.Visible = True
.Plot.Axis(VtChAxisIdY2).AxisTitle.TextLayout.Orientation = VtOrientationHorizontal
.Plot.Axis(VtChAxisIdY2).ValueScale.Minimum = 0
.Plot.Axis(VtChAxisIdY2).ValueScale.Maximum = 10
.Plot.Axis(VtChAxisIdX).ValueScale.Auto = False
.Legend.Location.LocationType = VtChLocationTypeBottom
.Plot.SeriesCollection(1).LegendText = "Legend1"
.Plot.SeriesCollection(2).LegendText = "Legend2"
.Plot.SeriesCollection(3).LegendText = "Legend3"
.Plot.Axis(VtChAxisIdX).Labels(1).Auto = False
.Plot.Axis(VtChAxisIdX).Labels(1).TextLayout.HorzAlignment = VtHorizontalAlignmentCenter
For m = 1 To rows
.Column = 1
.Row = m
n = 0
If m Mod 1 = 0 Then
n = n + 1
.RowLabel = Xaxis(m)
Else
.RowLabel = ""
End If
Next m
End With
3、源代码
完整代码见:
源代码下载