三、应用举例:
下列示例先使用SaveSetting语句,在注册区里建立试验应用程序的项目,然后使用DeleteSetting语句将之删除。因为没有指定key参数,整个区段都会被删除掉,包括区段名称及其所有的项设置(子键,key)。
建立一标准工程,在窗体上添加两个命令按钮,将下面的程序粘贴过去。 Private Sub Command1_Click() '在注册区中添加一些设置值。
SaveSetting appname:=\试验\ SaveSetting \试验\End Sub
Private Sub Command2_Click() '删除区段及所有的设置值。 DeleteSetting \试验\End Sub
单击命令按钮1,然后打开注册表,你可以在HKEY_CURRENT_USER\\Software\\VB and VBA Program Settings找到刚才添加的内容。关闭注册表。
单击命令按钮2,然后打开注册表,那么在HKEY_CURRENT_USER\\Software\\VB and VBA Program Settings已经删除了刚才添加的内容。关闭注册表。
Dim语句
描述:声明变量并分配存储空间。 一、语法:
Dim[WithEvents]varname[([subscripts])][As[New]type] Dim语句的语法包含下面部分: 部分 描述 可选的。关键字,只有在类模块中使用才是合法的。WithEvents说明本变量是WithEvents 一个用来响应由ActiveX对象触发的事件的对象变量。不能使用WithEvents创建数组。WithEvents不能和New一起使用。 varname subscripts 必需的。变量的名称;遵循标准的变量命名约定。 可选的。数组变量的维数。 可选的。可隐式地创建对象的关键字。如果使用New来声明对象变量,则在第一次引用该变量时将新建该对象的实例,因此不必使用Set语句来给该对象引用赋值。 可选的。变量的数据类型;可以是VB变量的各种类型、用户定义类型、或对象类型。所声明的每个变量都要一个单独的As type子句。 New Type subscripts参数使用下面的语法: [lower To]upper[,[lower To]upper]...
[lower To]upper意思为下界到上界。如果不显式指定lower,则数组的下界由Option
Base语句控制。如果没有Option Base语句则下界为0。
二、说明:
局部变量有两种,一种是模块或窗体级局部变量,另一种是过程级局部变量。在一个语句里可以声明多个变量。在模块或窗体级别中用Dim声明的变量,为模块或窗体级局部变量,对该模块或窗体中的所有过程都是可用的。在过程级别中用Dim声明的变量,为过程级局部变量,只在过程内是可用的。
用Dim语句可以在模块或窗体级或过程级中声明变量的数据类型。例如,下面的语句声明了String类型的变量。 Dim MyStr As String
也可以使用Dim语句来声明变量的对象类型。下面的语句为树型视图(TreeView)的新建项目(节点)声明了一个变量。 Dim nd As New Node
如果定义对象变量时没有使用New关键字,则在使用该变量之前,必须使用Set语句将该引用对象的变量赋值为一个已有对象。 Dim nd As Node
Set nd = TreeView1.Nodes.Add(Relative,Relationship,Key,Text,Image,SelectedImage)
也可以使用带空圆括号的Dim语句来声明动态数组。在声明动态数组后,可以在过程内使用ReDim语句来重新定义该数组的维数和元素。
注意:当在过程中使用Dim语句时,通常将Dim语句放在过程的开始处。 三、应用举例:
该示例演示使用Dim语句来声明变量,也演示了用Dim语句来声明数组。 Dim MyNum As Integer '声明整型变量
Dim AnyNum As Single, MyStr As String, MyValue As Double '一个语句里声明多个变量 Dim AnyValue '声明变体变量
Dim AnyStr As String * 20 '声明定长字符串变体变量
Dim MyWeek(7) As String '声明一维字符串数组,元素为七个
Dim MySeveral(6, 2, 3) As Double 'MySeveral是一个三维双精度数组
Dim AnySeveral(6 To 15, 10 To 19) As Integer 'AnySeveral是一个显式指定了上下界的二维整型数组。
Dim MyDevel() 'MyDevel是一个变体动态数组
Do...Loop(循环)语句
描述:循环语句,有两种变形,一种是当条件为True时,重复执行一个语句块中的命令。另一种重复执行一个语句块中的命令,直到条件变为True时。 一、语法:
Do[{While|Until}condition] [statements] [Exit Do] [statements] Loop
或者可以使用下面这种语法:
Do
[statements] [Exit Do] [statements]
Loop[{While|Until}condition]
Do...Loop语句的语法包含下面部分: 部分 While Until 描述 关键字,可选。当条件为True时,重复执行一个语句块中的命令。 关键字,可选。重复执行一个语句块中的命令,直到条件变为True时。While和Until只能选择一个。 可选参数。数值表达式或字符串表达式,其值为True或False。如果conditioncondition 是Null,则condition会被当作是False。当condition为True时,执行Do While循环或从Do Until循环跳出。 statements 一条或多条命令,它们将被重复执行。 Exit Do 可选。当statements包含条件且条件满足时退出循环。 二、说明: 一般来讲,While和Until只能而且必须选择一个。如果不选,将进入无限循环,这时只能用Exit Do语句跳出循环。
在Do…Loop中可以在任何位置放置任意个数的Exit Do语句,随时跳出Do…Loop循环。Exit Do通常用于条件判断之后,当满足条件后,Exit Do语句将控制权转移到紧接在Loop命令之后的语句。
Do…Loop也可以采用嵌套方式。如果Exit Do使用在嵌套的Do…Loop语句中,则Exit Do会将控制权转移到Exit Do所在位置的外层循环。 注意:两种Do…Loop语句运行方式是不同的。 Do[{While|Until}condition] [statements] Loop
采用这种循环,程序先判断条件,若条件满足,执行语句块中的命令,否则退出循环。 Do
[statements]
Loop[{While|Until}condition]
采用这种循环,程序先执行语句块中的命令,然后判断条件,若条件满足,重复执行语句块中的命令,否则退出循环。因此在此循环中,至少要执行一次语句块中的命令。 三、应用举例:
本示例示范如何使用Do...Loop语句。建立一个标准工程,在窗体上添加两个命令按钮,将下面的程序粘贴过去。 Private Sub Command1_Click()
Dim Check As Boolean, Counter As Integer Check = True: Counter = 0 '设置变量初始值。 Do '外层循环。
Do While Counter < 20 '内层循环。
Counter = Counter + 1 '计数器加一。 If Counter = 10 Then '如果条件成立。 Check = False '将标志值设成False。 Exit Do '退出内层循环。 End If Loop
Loop Until Check = False '退出外层循环。
MsgBox \End Sub
Private Sub Command2_Click()
Dim Check As Boolean, Counter As Integer, I As Integer Check = True: I = 0 '设置变量初始值。 Do Until Check = False '外层循环 Counter = 0
Do While Counter < 20 '内层循环。 Counter = Counter + 1 '计数器加一。 Loop I = I + 1
If I = 10 Then Check = False '如果条件成立。将标志值设成False。 Loop
MsgBox \End Sub
单击命令按钮1,内层的Do...Loop语句循环到第10次时将标志值设置为False,并用ExitDo语句强制退出内层循环。外层循环则在检查到标志值为False时,马上退出。MsgBox显示“Counter=10;Check=False。” 单击命令按钮2,内层的Do...Loop语句循环到第20次时退出内层循环。外层的Do...Loop检测I=10时退出外层循环。MsgBox显示“Counter=20;I=10;Check=False。”
End语句
描述:结束程序、过程或语句。 一、语法: End
End语句的语法有以下几种形式: 部分 End End Function End If End 描述 必要的,用于结束程序 必要的,用于结束一个Function过程 必要的,用于结束一个If…Then…Else语句块 必要的,用于结束一个PropertyLet、PropertyGet、或Property End Select End Sub End Type End With PropertySet过程 必要的,用于结束一个SelectCase语句 必要的,用于结束一个Sub过程 必要的,用于结束一个用户定义类型的定义(Type语句) 必要的,用于结束一个With语句 二、说明:
End语句提供了一种强迫中止程序的方法,它不调用窗体和类模块中的Unload、QueryUnload、Terminate事件或任何其它VisualBasic代码,只是生硬地终止代码执行。 三、应用举例:
本示例使用End语句,在用户输入错误密码时结束代码执行。建立一个标准工程,在窗体上添加一个命令按钮和一个文本框,将下面的程序粘贴过去。 Private Sub Command1_Click() Static I As Integer
If Trim(Text1.Text) = \ MsgBox \密码正确\ Else
MsgBox \密码错误\ I = I + 1
If I = 3 Then End End If End Sub
在文本框键入password,单击命令按钮,MsgBox显示“密码正确”;在文本框键入其他字符,单击命令按钮,MsgBox显示“密码错误”,当第三次键入错误字符,将退出程序。
Enum语句
描述:定义枚举类型。 一、语法:
[Public|Private]Enum Name
Membername[=Constantexpression] Membername[=Constantexpression] ...
End Enum
Enum语句的语法包含下面部分: 部分 Public private 描述 可选的。表示该Enum类型是全局的(公用的),在整个工程中都是可见的。Enum类型的缺省情况是Public。 可选的。表示该Enum类型是局部的,只在所声明的模块或窗体中是可