工控随笔_19_西门子_WinCC的VBS脚本_08_常量和流程控制_01
在编程的过程中,有时候我们会使用一些固定的值,例如圆周率,或者某个人的生日,或者家庭住址等等,
这些信息对于一个对象来说一旦确定就不会改变,因此我们在编程的时候也不希望这些信息会改变,在VBS里面
也提供了和其他一些语言中一样的机制: 常量。
常量大体有两种类型: 字面值常量 和 具名常量。
一、常量
Option Explicit ' vbs 常量
'vbs有两种类型的常量: 字面值常量 和 具名常量 '字面值常量
'字面值常量, 就如字面意思一样,其值就和字面意思表达的一样
Dim strAddress
'下面语句的 中华人民共和国上海市 就是字面值常量
strAddress = "中华人民共和国上海市" Dim nYear
'下面语句的 2000 就是字面值常量
nYear = '具名常量
'1、具名常量,其实质就是其值不能修改的变量, 这个变量一旦初始化后
' 其存储的内容不能被改变,
'2、具名常量通过关键字 const 指定
Const Pi = 3.1415926 '具名常量初始化后不能在赋值
Pi= MsgBox Pi
如上代码,具名常量初始化后不能再进行赋值,如果赋值的话就会报错。如下图所示:

这个地方需要注意。
Option Explicit ' vbs 常量
'vbs有两种类型的常量: 字面值常量 和 具名常量 '字面值常量
'字面值常量, 就如字面意思一样,其值就和字面意思表达的一样
Dim strAddress
'下面语句的 中华人民共和国上海市 就是字面值常量
strAddress = "中华人民共和国上海市" Dim nYear
'下面语句的 2000 就是字面值常量
nYear = '具名常量
'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 =
nSecond =
strMsg = nStart & vbNewLine & nSecond '计算斐波那契数列的第3-30项
For nLoop = To
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() nArrayName() =
nArrayName() =
nArrayName() =
nArrayName() =
nArrayName() =
nArrayName() = 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、或者在页面右下角点推荐哟!!!
--------------------------------------------------------------分割线---------------------------------------------------------------
工控随笔_19_西门子_WinCC的VBS脚本_08_常量和流程控制_01的更多相关文章
- 工控随笔_20_西门子_WinCC的VBS脚本_09_常量和流程控制_02
vbs不但提供了分支结构,还提供了丰富的循环形式.一共有3种循环: 1.for循环 2.do...loop循环 3.while循环 各种循环有各自的特点,在使用的时候可以进行转换. 前面已经描述过Fo ...
- 工控随笔_10_西门子_WinCC的VBS脚本_01_基础入门
很多人都认为VB语言或者VBS脚本语言是一种很low的语言,从心里看不起VB或者VBS, 但是其实VBS不仅可以做为系统管理员的利器,同样在工控领域VBS语言大有用武之地. 西门子的WinCC提供了两 ...
- 工控随笔_21_西门子_WinCC的VBS脚本_10_对象_01
最近有点小忙,各种事情,心情也不是很好,烦心事特别多,因此最近更新的比较慢. 不敢再松懈了,今天正好有点时间,就继续看了一下VBScript中关于对象的一些内容. 一.对象 OOP是编程规模发展到一定 ...
- 工控随笔_13_西门子_WinCC的VBS脚本_04_变量类型之二
上一个随笔说了一些关于vbs变量类型的内容,这一篇我们继续说说变量类型相关的内容. 一.NULL补充内容 '需要注意的是,NULL不能简单通过 = 来进行比较,而必须通过 'IsNull函数来实现 ' ...
- 工控随笔_18_西门子_WinCC的VBS脚本_07_变量作用域和传值、传址
在vbs脚本中也存在和其他编程语言一样的概念,那就是变量的作用域,变量的作用域决 定在什么范围内可以访问. 同样的在vbs脚本中对于变量也有一个生命周期, 变量的生命周期决定了变量的存续时间 这个主要 ...
- 工控随笔_17_西门子_WinCC的VBS脚本_06_过程和函数
和其他语言一样,vbs提供了过程和函数机制,通过函数和过程可以优化代码结构和实现代码复用, 减少代码的编写量. 一.代码 具体不再多说,看实例代码. ' vbs的函数和过程 '1.过程式编程是一大编程 ...
- 工控随笔_15_西门子_WinCC的VBS脚本_05_变量类型之三_VBS数组
数组是一种复杂数据类型,不但有数组本身的数据类型: 数组,还有数组元素中存储的数据的类型. 一.vbs中的数组类型 在VBS中提供了两种数组类型,一种是固定数组,一种是动态数组. 1.固定数组 就是在 ...
- 工控随笔_12_西门子_WinCC的VBS脚本_03_变量类型
说到编程语言,总是绕不开数据类型,因为数据类型决定了数据可以进行什么样的操作.同时数据类型 从广义上来说是一种数据结构,在过程式编程的过程中,曾经有过这样一种说法: 程序 = 数据结构 + 算法 可见 ...
- 工控随笔_11_西门子_WinCC的VBS脚本_02_运算符
VBS脚本做为编程语言,提供了很多的运算符,通过这些运算符,可以实现不同的操作.运算符具有不同的类型 不同的运算符之间具有运算优先级. 一.运算符的分类 大体分为以下几类: 1.赋值运算符 2.算术运 ...
随机推荐
- 2017-9-24模拟赛T1 个人卫生综合征(school.*)
题目 每天 BBS 都要从家里经过城市中的一段路到学校刷五三.城市中一共有 n 个路口和 m 条双向道路,每条双向道路都连接着两个路口 a i .b i 且有一定的时间花费 v i .BBS家编号为 ...
- SpringMVC后台接受前台传值的方法
1.HttpRequestServlet 接收前台传值 @RequestMapping("/go5") public String hello5(HttpServletReques ...
- echarts 自定义主题
https://blog.csdn.net/flitrue/article/details/52841338 import $echarts from 'echarts' import 'echar ...
- MHA(下)
一.配置VIP漂移 主机名 IP地址(NAT) 漂移VIP 描述 mysql-db01 eth0:192.168.0.51 VIP:192.168.0.60 系统:CentOS6.5(6.x都可以) ...
- Ubuntu 将其他盘挂载到/home的子目录下
Ubuntu 14.04 将其他盘挂载到/home的子目录下当安装完Ubuntu系统,由于当时没有注意,分配的分区空间太小.经过一段时间安装了各式各样的软件后,常常会遇到/home目录下空间不够的情况 ...
- windows安装oracle-odbc驱动错误原因
在windows7上准备使用powerdesigner16连接oracle逆向生成表结构,确发现一直无法连接oracle,其原因是本机没有ODBC驱动. 第一步 安装oracle11g客户端,这里是具 ...
- Virtualbox 虚拟机安装Linux
背景:Win10系统 MSI主板 目标:基于Win10 利用虚拟机Virtualbox安装Linux 准备工作:Ctrl+Alt+Del打开任务管理器——>性能(查看CPU虚拟化是否开启) ...
- http协议常见状态码含义
状态码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值: 2xx:成功--表示请求已被成功接收.理解.接受 200(成功) 服务器已成功处理了请求.通常,这表示服务器提供了请求的网页. ...
- 第二次实验:CC2530平台上GPIO组件的TinyOS编程
实验二 CC2530平台上GPIO组件的TinyOS编程 实验目的: 加深和巩固学生对于TinyOS编程方法的理解和掌握 让学生理解和掌握CC2530的GPIO及外部中断,及其TinyOS编程方法 学 ...
- 【步步为营 Entity Framework+Reporting service开发】-(2) Code Fir
也许有人问,为什么要用EF创建爱你数据表,code first好处是什么? 使用EF创建数据库/表,只需要设计简单的C#类,再表内容变化的时候他会自动更新数据库结构,并且保留原有数据. EF很强大,支 ...