和其他语言一样,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. CSS效果:焦点图片

    HTML: <html lang="en"> <head> <meta charset="UTF-8"> <meta ...

  2. js 冒泡排序与快速排序

    刚好今晚看了js的冒泡排序跟快速排序,趁着还没忘记先记下来. 1. 冒泡排序:遍历数组,每个元素都与后一个元素比较,如果大于下一个元素,则两个元素位置调换.否则的话当前元素再与下下个元素比较,一直到 ...

  3. if ,while ,for 的掌握

    a)python的缩进和冒号 对于Python而言代码缩进是一种语法,Python没有像其他语言一样采用{}或者begin...end分隔代码块,而是采用代码缩进和冒号来区分代码之间的层次. 缩进的空 ...

  4. 调试利器GDB(下)

    本节我们研究gdb更深层的用法: 数据断点: 可以根据变量的值来监视变量. 数据断点本质是硬件断点,数量有限. watch var_name告诉gdb我们关注var_name这个变量,如果它的值被改变 ...

  5. Asp.net中时间格式化的几种方法

    1. 数据控件绑定时格式化日期方法:<asp:BoundColumn DataField="AddTime" HeaderText="添加时间" Data ...

  6. 文档资源搜索小工具 - 支持PDF,DOC,PPT,XLS

    最近做了一个文档搜索小工具,当然不是网盘搜索工具,这个工具支持四种文件格式搜索(pdf,doc,ppt,xls),你只需要在搜索框中输入你想要搜索资源的关键词,点击搜索按钮即可获取相关资源,点击下载按 ...

  7. 免app下载笔趣阁小说

    第一次更新:发现一个问题,就是有时候网页排版有问题的话容易下载到多余章节,如下图所示: 网站抽风多了一个正文一栏,这样的话就会重复下载1603--1703章节. 解决办法: 于是在写入内容前加了一个章 ...

  8. ccf-集合竞价-201412-3

    这道题数据量很小,所以用前缀和直接暴力解决了 首先将浮点数转换为整数; int_p=(int)(dou_p*100+0.5); 必须加一个eps,否则浮点数运算会有误差 然后从高到低枚举 #inclu ...

  9. 利用位运算进行a+b的计算(Java&&Python)

    题目链接 需要用到的位运算操作:异或(^).与(&).右移(<<) 异或运算:又称不进位加法,a^b得到的结果为a与b相加,但是需要进位的地方不进位得到的结果 与运算:找出来a和b ...

  10. 小妖精的完美游戏教室——东方PROJECT,同人,th12灵梦A

    ╮(╯▽╰)╭没办法,小妖精Balous也很讨厌学院化的教育呀,一点意义都没有. 这次就上传东方地灵殿灵梦A逻辑部分的核心代码吧,估计连老师都看不懂.动画部分的代码就不放上来了. //======== ...