和其他语言一样,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_过程和函数的更多相关文章

  1. 工控随笔_10_西门子_WinCC的VBS脚本_01_基础入门

    很多人都认为VB语言或者VBS脚本语言是一种很low的语言,从心里看不起VB或者VBS, 但是其实VBS不仅可以做为系统管理员的利器,同样在工控领域VBS语言大有用武之地. 西门子的WinCC提供了两 ...

  2. 工控随笔_21_西门子_WinCC的VBS脚本_10_对象_01

    最近有点小忙,各种事情,心情也不是很好,烦心事特别多,因此最近更新的比较慢. 不敢再松懈了,今天正好有点时间,就继续看了一下VBScript中关于对象的一些内容. 一.对象 OOP是编程规模发展到一定 ...

  3. 工控随笔_13_西门子_WinCC的VBS脚本_04_变量类型之二

    上一个随笔说了一些关于vbs变量类型的内容,这一篇我们继续说说变量类型相关的内容. 一.NULL补充内容 '需要注意的是,NULL不能简单通过 = 来进行比较,而必须通过 'IsNull函数来实现 ' ...

  4. 工控随笔_20_西门子_WinCC的VBS脚本_09_常量和流程控制_02

    vbs不但提供了分支结构,还提供了丰富的循环形式.一共有3种循环: 1.for循环 2.do...loop循环 3.while循环 各种循环有各自的特点,在使用的时候可以进行转换. 前面已经描述过Fo ...

  5. 工控随笔_19_西门子_WinCC的VBS脚本_08_常量和流程控制_01

    在编程的过程中,有时候我们会使用一些固定的值,例如圆周率,或者某个人的生日,或者家庭住址等等, 这些信息对于一个对象来说一旦确定就不会改变,因此我们在编程的时候也不希望这些信息会改变,在VBS里面 也 ...

  6. 工控随笔_18_西门子_WinCC的VBS脚本_07_变量作用域和传值、传址

    在vbs脚本中也存在和其他编程语言一样的概念,那就是变量的作用域,变量的作用域决 定在什么范围内可以访问. 同样的在vbs脚本中对于变量也有一个生命周期, 变量的生命周期决定了变量的存续时间 这个主要 ...

  7. 工控随笔_15_西门子_WinCC的VBS脚本_05_变量类型之三_VBS数组

    数组是一种复杂数据类型,不但有数组本身的数据类型: 数组,还有数组元素中存储的数据的类型. 一.vbs中的数组类型 在VBS中提供了两种数组类型,一种是固定数组,一种是动态数组. 1.固定数组 就是在 ...

  8. 工控随笔_12_西门子_WinCC的VBS脚本_03_变量类型

    说到编程语言,总是绕不开数据类型,因为数据类型决定了数据可以进行什么样的操作.同时数据类型 从广义上来说是一种数据结构,在过程式编程的过程中,曾经有过这样一种说法: 程序 = 数据结构 + 算法 可见 ...

  9. 工控随笔_11_西门子_WinCC的VBS脚本_02_运算符

    VBS脚本做为编程语言,提供了很多的运算符,通过这些运算符,可以实现不同的操作.运算符具有不同的类型 不同的运算符之间具有运算优先级. 一.运算符的分类 大体分为以下几类: 1.赋值运算符 2.算术运 ...

随机推荐

  1. C16记技术服务支持

    1.首页笔记:可以通过点击加号添加笔记的分类,还可以查看最近的10条笔记 2.图形:可以通过查看笔记的比例来分析自己最近的状况 3.快速添加笔记:点击添加笔记能够直接进行笔记 4.时间轴:能够通过文字 ...

  2. python笔记3——字符串的操作

    #Author:Wildwolf name="my name is wildwolf ," print(name.capitalize()) #首字母大写 print(name.c ...

  3. Vue开发爬坑记录

    1.使用eslint代码检查时,常见的的错误: 1.1 Expected indentation of 0 spaces but found 1 前面的空格个数不对.应该不能有空格. 1.2 Stri ...

  4. org.springframework.beans.factory.BeanCreationException 解决异常错误

    一月 18, 2017 10:18:51 上午 org.apache.coyote.http11.Http11Protocol initINFO: Initializing Coyote HTTP/1 ...

  5. 添加PROPAGATION_REQUIRES_NEW 事务没有产生作用

    最近在做事务添加时  发现自己的事务没有新建,上网查到   仅用作收藏. 其二  注意  事务的注解  应该在 内层的事务上面 一.描述Spring遇到嵌套事务时,当被嵌套的事务被定义为“PROPAG ...

  6. kettle之linux使用kettle

    Kettle可以在Window.Linux.Unix上运行,数据抽取高效稳定,使用之前需要准备环境. 准备java环境,这里就不赘述了,建议jdk7以上版本. 上传kettle压缩包,并解压,我解压的 ...

  7. Linux文件编辑vi、mkdir等

    1.进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于 ...

  8. Spring(转载二)

    在网上看到一篇文章,感觉写得挺不错的,转载一下,本文转载自:http://blog.csdn.net/m13666368773/article/details/7802126 一. IoC理论的背景 ...

  9. 2018.9.12 B树总结

    1. B-Tree B-树是一种平衡的多路查找树,它在文件系统中很有用. 1.1 B-Tree 特性 关键字集合分布在整颗树中: 任何一个关键字出现且只出现在一个结点中: 搜索有可能在非叶子结点结束: ...

  10. HtmlUnit学习总结

    HtmlUnit学习总结 转载 2016年09月13日 15:58:25 标签: htmlunit / 爬虫 7304 本文摘抄其他博客或者技术论坛,自己搜集整理如下: HtmlUnit学习总结 摘要 ...