工控随笔_17_西门子_WinCC的VBS脚本_06_过程和函数
和其他语言一样,vbs提供了过程和函数机制,通过函数和过程可以优化代码结构和实现代码复用,
减少代码的编写量。
一、代码
具体不再多说,看实例代码。
' vbs的函数和过程 '1、过程式编程是一大编程思想,就和后来的面向对象一样,对于代码的复用
' 和代码的逻辑结构是具有非凡的意义的。
'2、现在的编程语言无论是脚本、解释型语言、编译型语言都具有函数和过程
' 的概念
'3、简单的来说我们可以把函数或者过程看成一个黑盒子,给它原料(输入参数)
' 他们就会生成产品(输出)。
'4、在语法上来看,函数和过程就是一段高度耦合的完成一定功能的代码片段,
' 就是通常说的代码块, 或者说具名代码块,函数名或者过程名就是这段代
' 码的名称
'5、函数返回值,过程不返回值, 但是不返回值不代表不产生输出,这个需要注
' 意 Option Explicit 'vbs 过程
'1、通过 sub 关键字表示定义过程,sub关键字表示具名代码块的开始,
' 通过 end sub 来表示代码块的结束
'2、语法格式
' Sub Procedure_Name(argment 1, argment 2,.......)
' sub code block
' end sub
'
' 下面为中文描述
' Sun 过程名(参数1, 参数2,参数3,.........)
' 过程代码块
' end sub '定义简单的过程
Sub GreetingWorld
MsgBox "Hello world,This is my the very first subprocedure!"
End Sub '调用过程
GreetingWorld '前面说过过程可以接受参数,下面定义接受参数的过程
'需要注意的是,因为vbs只有一种数据类型variant,所以定义过程的时候
'无需定义参数的类型
Sub SayHellow(strName)
MsgBox "Hellow, " & strName & " Nice to meet you!"
End Sub '调用带参数的过程
SayHellow("volcanol") '过程调用,传递参数不需要用()
SayHellow "volcanol" 'vbs函数
'1、vbs函数通过关键字 function 来指定
'2、对于vbs函数来说,其与过程的最大区别就是函数返回值,其他规则
' 一样
'3、在一个区别就是,即使是调用不带参数的函数,也必须有()表示这个是
' 函数
'4、函数的返回值,通过函数名返回,因此在函数内部需要将返回值赋值给
' 函数名, 这里就相当于函数名是一个隐式的变量定义 '定义不带参数的函数
Function fCycle()
fCycle = * 3.1415926 *
End Function Dim fRollCycle
fRollCycle = fCycle() MsgBox "半径为10的圆周的周长为: " & fRollCycle '定义带参数的函数
Function fSum(arg1,arg2)
fSum = arg1 + arg2
End Function '调用带参数的函数
Dim nJackAge
Dim nMikeAge nJackAge =
nMikeAge = MsgBox "Jack and Mike's age sum is: " & fSum(nJackAge,nMikeAge) 'call语句
'在vbs中还有一个语句,用来调用过程,那就是call 语句
'对于函数和过程call语句的方式不一样 '1、不带参数的过程, call语句调用一样
Call GreetingWorld
Call GreetingWorld() '2、带参数的过程
' 带参数的过程调用必须传递参数 '下面这一句不能正确执行
'Call SayHellow "Jesus" Call SayHellow("Jesus") '3、不带参数的函数
'这样就不能将返回的值再次使用,所以没有什么意义
Call fCycle() '4、带参数的函数
'同样没什么意义
Call fSum(,) 'Tips
'1、对于call语句,一般不要使用,两个原因,难打字,而且规则太复杂
'2、对于过程,就不用带括号()调用,这样一般一看就知道是过程
'3、对于函数,即便是不带参数的函数调用,也用括号(),这样一看就知道是函数调用 'Exit sub和Exit Function 语句
'1、有时候函数或过程执行到一半的时候因为已经得到了想要的结果,这个时候如果再往下
'执行未完成的部分,就会耗费资源这个时候就可以提前退出函数或过程
'2、Exit sub 语句退出过程
'3、Exit function 语句退出函数 '退出过程
Sub DisplaySum(lngArg1,lngArg2)
If Not IsNumeric(lngArg1) Or Not IsNumeric(lngArg2) Then
MsgBox "错误的数据类型,将退出执行过程"
Exit Sub
Else
MsgBox CLng(lngArg1) + CLng(lngArg2)
End If
End Sub DisplaySum "volcanol", ""
DisplaySum "","" '退出函数
'退出函数与退出过程有一点不同的就是,在退出函数之前必须为函数设置一个默认返回值
Function fFactorial(nNum)
Dim nFactorial
Dim nLoop '重点要注意这个地方的防御式编程
If Not IsNumeric(nNum) Or Not VarType(nNum) = vbInteger Then
'因为阶乘的值大于等于1,所以返回0可以表示执行出错,在使用这个
'函数的时候,必须先检查返回值是否为0
fFactorial =
MsgBox "参数错误,将退出执行"
Exit Function
Else
'必须注意,没有初始化的变量其值 == 0
nFactorial =
For nLoop = To CLng(nNum)
nFactorial = nFactorial * nLoop
Next
End If
fFactorial = nFactorial
End Function MsgBox fFactorial("volcanol")
MsgBox fFactorial(3.1415926) MsgBox fFactorial()
二、Tips
1、尽量不要用CALL语句
2、如果在函数中使用了Exit Function函数,那么必须要给函数一个替代值
--------------------------------------------------------------分割线---------------------------------------------------------------
1、文章均为个人原创,欢迎转载,转载请保留出处:https://www.cnblogs.com/volcanol/
2、获取工控PLC、变频器、HMI、计算机、Windows、Linux、嵌入式资料点击:获取资料
3、如果您觉得文章对您有帮助可转至页面上半部分打赏,或移步:打赏
4、或者在页面右下角点推荐哟!!!
--------------------------------------------------------------分割线---------------------------------------------------------------
工控随笔_17_西门子_WinCC的VBS脚本_06_过程和函数的更多相关文章
- 工控随笔_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函数来实现 ' ...
- 工控随笔_20_西门子_WinCC的VBS脚本_09_常量和流程控制_02
vbs不但提供了分支结构,还提供了丰富的循环形式.一共有3种循环: 1.for循环 2.do...loop循环 3.while循环 各种循环有各自的特点,在使用的时候可以进行转换. 前面已经描述过Fo ...
- 工控随笔_19_西门子_WinCC的VBS脚本_08_常量和流程控制_01
在编程的过程中,有时候我们会使用一些固定的值,例如圆周率,或者某个人的生日,或者家庭住址等等, 这些信息对于一个对象来说一旦确定就不会改变,因此我们在编程的时候也不希望这些信息会改变,在VBS里面 也 ...
- 工控随笔_18_西门子_WinCC的VBS脚本_07_变量作用域和传值、传址
在vbs脚本中也存在和其他编程语言一样的概念,那就是变量的作用域,变量的作用域决 定在什么范围内可以访问. 同样的在vbs脚本中对于变量也有一个生命周期, 变量的生命周期决定了变量的存续时间 这个主要 ...
- 工控随笔_15_西门子_WinCC的VBS脚本_05_变量类型之三_VBS数组
数组是一种复杂数据类型,不但有数组本身的数据类型: 数组,还有数组元素中存储的数据的类型. 一.vbs中的数组类型 在VBS中提供了两种数组类型,一种是固定数组,一种是动态数组. 1.固定数组 就是在 ...
- 工控随笔_12_西门子_WinCC的VBS脚本_03_变量类型
说到编程语言,总是绕不开数据类型,因为数据类型决定了数据可以进行什么样的操作.同时数据类型 从广义上来说是一种数据结构,在过程式编程的过程中,曾经有过这样一种说法: 程序 = 数据结构 + 算法 可见 ...
- 工控随笔_11_西门子_WinCC的VBS脚本_02_运算符
VBS脚本做为编程语言,提供了很多的运算符,通过这些运算符,可以实现不同的操作.运算符具有不同的类型 不同的运算符之间具有运算优先级. 一.运算符的分类 大体分为以下几类: 1.赋值运算符 2.算术运 ...
随机推荐
- javascript 禁用 右键 按键 禁用开发者工具
var h = window.innerHeight,w=window.innerWidth; //禁用右键 (防止右键查看源代码) window.oncontextmenu=function(){ ...
- Python 子进程不能input
from threading import Thread from multiprocessing import Process def f1(): name = input('请输入名字') #EO ...
- html css样式子元素相对父级元素定位
废话不多说. 父级元素 样式设置: position:relative; 子元素样式: position: absolute; 这样就可以达到子元素相对父级元素定位了.
- 网络请求————ProxyHandler实现代理ip
from urllib import request #这个是没有使用代理的 # resp = request.urlopen('http://httpbin.org/ip') # print(res ...
- 安装Java8以后,Eclipse运行异常解决方案
再输入cmd,java后提示运行环境配置中,安装的是jdk1.7,但要求是jdk1.8,也就是说Java8. 网上删除注册表,下载彻底清除软件均不能解决问题的,请按照下边提示完成操作即可. 1.在文件 ...
- mybatis 源码分析一
1.SqlSessionFactoryBuilder public SqlSessionFactory build(InputStream inputStream, String environme ...
- Netty 中 EventLoopGroup 的创建
本文是基于 Netty 4.1.6.Final 的源码来分析的. 在分析源码之前做一些准备工作: 先熟悉一下 IDEA 的几个快捷键,能极大的提高我们查看源码的效率: Ctrl + Alt + B:用 ...
- vba批量作图心得1
1.1:连续有几个图的时候,如果需要设置某一个图的横坐标标签隐藏,要注意将坐标轴标签属性和坐标轴曲线粗细的属性区分开来 1.2:PlotArea里面有left和insideLeft属性,结合两个可以控 ...
- jdk的环境变量配置
首先下载jdk,下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html 可以选择下载jdk的版本,按照提示一步一 ...
- 关于ubuntu远程访问服务器的知识点
为了可以打开图形界面,用ssh -X 用户名@地址 如何远程打开文件夹可视化界面 nautilus /文件夹