在编程的过程中,有时候我们会使用一些固定的值,例如圆周率,或者某个人的生日,或者家庭住址等等,
这些信息对于一个对象来说一旦确定就不会改变,因此我们在编程的时候也不希望这些信息会改变,在VBS里面
也提供了和其他一些语言中一样的机制: 常量。
常量大体有两种类型: 字面值常量 和 具名常量。
一、常量
Option Explicit ' vbs 常量 'vbs有两种类型的常量: 字面值常量 和 具名常量 '字面值常量 '字面值常量, 就如字面意思一样,其值就和字面意思表达的一样 Dim strAddress '下面语句的 中华人民共和国上海市 就是字面值常量 strAddress = "中华人民共和国上海市" Dim nYear '下面语句的 2000 就是字面值常量 nYear = 2000 '具名常量 '1、具名常量,其实质就是其值不能修改的变量, 这个变量一旦初始化后 ' 其存储的内容不能被改变, '2、具名常量通过关键字 const 指定 Const Pi = 3.1415926 '具名常量初始化后不能在赋值 Pi= 10 MsgBox Pi
如上代码,具名常量初始化后不能再进行赋值,如果赋值的话就会报错。如下图所示:
这个地方需要注意。
Option Explicit ' vbs 常量 'vbs有两种类型的常量: 字面值常量 和 具名常量 '字面值常量 '字面值常量, 就如字面意思一样,其值就和字面意思表达的一样 Dim strAddress '下面语句的 中华人民共和国上海市 就是字面值常量 strAddress = "中华人民共和国上海市" Dim nYear '下面语句的 2000 就是字面值常量 nYear = 2000 '具名常量 '1、具名常量,其实质就是其值不能修改的变量, 这个变量一旦初始化后 ' 其存储的内容不能被改变, '2、具名常量通过关键字 const 指定 Const Pi = 3.1415926 '具名常量初始化后不能在赋值 'Pi= 10 MsgBox Pi 'vbs的内置具名常量 '在vbs中内置了部分具名常量,这些常量方便使用vbs '典型的具名常量就是 msgbox的具名常量,通过不同的具名常量显示不同的按钮形式 '1、仅显示OK、确定按钮 MsgBox Pi,vbOKOnly '2、显示yes、no按钮 MsgBox Pi,vbYesNo '3、显示 i 图标 MsgBox Pi,vbYesNo + vbInformation '对于vbs内置的具名常量,建议可以查手册,这里再说几个常用的,其他不多说 ' vbNewLine 这个是表示再起一行的意思 ' vbcrlf 这个与上面的vbnewline是一个意思 MsgBox Pi & vbNewLine & "新行" & vbCrLf & "新的第二行"
二、流程控制
流程控制是编程语言最终要的概念之一,需要注意。
Option Explicit Rem 流程控制 '流程控制是编程语言中重要的概念,通过流程控制可以实现复杂的功能控制 '流程控制主要有: 分支、循环两种 ' 分支 '1、分支主要有IF语句 '2、select case 语句 'if语句 Dim strPrompt Dim nSelect strPrompt = vbCrLf & "1: 选择Yes说哈哈" & vbCrLf & _ "2: 选择No说嘻嘻" & vbCrLf & "3: 选择取消,不说话" nSelect = MsgBox("请选择不同的按钮,然后实现不同的功能" & strPrompt, vbYesNoCancel) If nSelect = vbyes Then MsgBox "选择Yes说哈哈" ElseIf nSelect = vbno Then MsgBox "选择No说嘻嘻" Else MsgBox "选择取消,不说话" End If '这个地方需要注意select case语句的执行与其他语言的不一致的地方 Select Case nSelect Case vbyes MsgBox "选择Yes哈哈" Case vbno MsgBox "选择No说嘻嘻" Case vbcancel MsgBox "选择取消,不说话" Case Else MsgBox "不正确的选择" End Select '循环 '循环共有四种形式 '1、 for..... next '2、 do....loop、 '3、 while....wend 'for 循环 'for 循环有两种形式 '1、for...next '2、for each .....next 'for...next 'for....next循环主要用于循环次数明确的循环应用,例如打印斐波那契数列 '的前多少项 Dim nStart Dim nSecond Dim nLoop Dim strMsg Dim nTemp '斐波那契数列的开始两项 nStart = 1 nSecond = 1 strMsg = nStart & vbNewLine & nSecond '计算斐波那契数列的第3-30项 For nLoop = 2 To 30 nTemp = nSecond nSecond = nSecond + nStart nStart = nTemp strMsg = strMsg & vbNewLine & nSecond Next MsgBox strMsg 'for each.....next循环 'for each....next循环是用来遍历集合中所有元素的一种特定的循环结构 '通过这个循环来实现对循环次数不确定的情况进行遍历 '使用for each....next循环需要使用关键字in, in表示在集合中访问元素 '同样需要使用一个循环控制变量,在循环中这个循环变量代表的就是集合中的元素 '但是这个变量在使用完毕之后,循环变量就 objLoop = empty '如果要再使用必须重新赋值 Dim objFSO Dim objFolder Dim objLoop Dim strFileName Set objFso=CreateObject("Scripting.FileSystemObject") Set objFolder= objFSO.GetFolder("D:\01_vbs") For Each objLoop In objFolder.Files strFileName =strFileName & objLoop.Name & vbCrLf 'MsgBox "我是循环变量,我的值为:" & objLoop Next MsgBox strFileName '下面的语句检测objLoop变量在循环结束后的值 If IsEmpty(objLoop) Then MsgBox "已经设置为empty" ElseIf IsNull(objLoop) then MsgBox "已经设置为空" Else MsgBox "未知结果" End If 'for each....next 循环还可以用来遍历数组 '注意新的脚本解释器对于数组维数的定义,这里5表示下标最大为5,但是开始 '是从0,所以有6个元素 Dim nArrayName(5) nArrayName(0) = 1 nArrayName(1) = 2 nArrayName(2) = 3 nArrayName(3) = 4 nArrayName(4) = 5 nArrayName(5) = 6 For Each nLoop In nArrayName MsgBox nLoop Next MsgBox "遍历后,nLoop的值为:" & nLoop
在使用For Each...next 语句的时候,要注意循环变量的值,在循环结束后已经自动的被设置
为Empty,如果这个时候访问的话必须再次赋值,否则就会出错,如下图所示:
循环变量在循环结束后被设置为 Empty。
三、Tips
1、分支结构不要嵌套太深
2、循环结构知道次数的一半用For语句
3、数组、集合遍历可以使用For each...next语句。
--------------------------------------------------------------分割线---------------------------------------------------------------
1、文章均为个人原创,欢迎转载,转载请保留出处:https://www.cnblogs.com/volcanol/
2、获取工控PLC、变频器、HMI、计算机、Windows、Linux、嵌入式资料点击:获取资料
3、如果您觉得文章对您有帮助可转至页面上半部分打赏,或移步:打赏
4、或者在页面右下角点推荐哟!!!
--------------------------------------------------------------分割线---------------------------------------------------------------