Sub过程

简介: 参数表是用来指明调用该Sub过程时需要传递给该过程的参数及类型。表内的参数称为形参。Sub过程可以没有形参(但小括号不可以省略),也可1到多个形参(多个之间用逗号隔开);

Sub过程作为我们每次编写VB程序时总是会出现的一个程序,那你知道它到底是什么吗?你在编写代码时有没有遇到过这样的问题:多个事件过程需要执行同一段相同的代码,那有没有什么办法能够让它只编写一次,但其他事件也都可以使用呢?今天来好好研究研究吧!


什么是Sub过程?


也称子过程


Sub过程的声明


[Private|Public][Static] Sub <过程名> ([参数表])


         过程体


         [Exit Sub]


End Sub


  • Private,只在过程所在的模块(如窗体模块)中的过程才能调用该过程;


  • Public,应用程序中的任何地方都可以调用该通用过程。默认;


  • Static,该过程中的局部变量是静态变量,调用结束后值仍然保留。也就是说,static当对它进行更改之后,再次调用它时,那么他的值还是保持上一次运行的值


  • 参数表是用来指明调用该Sub过程时需要传递给该过程的参数及类型。表内的参数称为形参。Sub过程可以没有形参(但小括号不可以省略),也可1到多个形参(多个之间用逗号隔开);


  • 在过程中加入exit sub语句提前退出过程


上述中讲到了一个形参的概念:形参是在Sub、Function过程的定义中出现的变量名。本质上一个名字,不占用内存空间,当他只有在被Function过程(函数)调用了才能进行运算、赋值。之后的博客还会详细讲到。


适用范围


窗体模块(.Frm)中,标准模块(.Bas)中


建立


我这里会讲到三种方法来建立Sub过程


1.选择“工具”菜单中“添加模块”命令,新建一个标准模块即可编辑sub过程


2.“工具”菜单中“添加过程”命令,填上想要创建的Sub过程名,类型选择子程序


3.对象框中选择“通用”项,输入Sub过程头+过程名,按回车键


20200311232906649.png


调用


1.使用Call语句。   Call<过程名> ([实参表])


注:实参个数与形参个数必须相等


2.直接使用过程名    <过程名> [<实参表>]


Private Sub Form_Click()
    FontSize = 20
    Call test               '使用Call语句调用过程
    test                    '使用过程名调用过程
End Sub
Sub test()                  '声明没有形参的Substr过程
    Print "我是大美女"
End Sub


上面这段代码中我分别使用了两种方法调用,不管你想使用哪种都可以,但他们还有个小小区别需要你注意:当使用过程名调用过程时,可以省略括号和Call


什么时候使用?


多个事件过程需要执行同一段相同的代码。如下代码是分别对1-10和1-100的累加的实现方法:


20200311231439325.png


'-----------------------------------------------
'不使用Sub过程的程序代码
'-----------------------------------------------
Private Sub Command1_Click()
    Dim a%, b%, total
    total = 0
    For i = 1 To 10             '1-10的累加
        total = total + i
    Next
    Print "1+2+...+10="; total
End Sub
Private Sub Command2_Click()
    Dim a%, b%, total
    total = 0
    For i = 1 To 100            '1-100的累加
        total = total + i
    Next
    Print "1+2+...+100="; total
End Sub


那如果使用了Sub过程实现是什么样的呢?


'-----------------------------------------------
'使用Sub过程
'-----------------------------------------------
Private Sub Command1_Click()
    Dim i%, total!
    Call fact(10, total)
    Print "1+2+...+10=" & total
End Sub
Private Sub Command2_Click()
    Dim i%, total!
    Call fact(100, total)
     Print "1+2+...+100=" & total
End Sub
Sub fact(n%, total!)
    Dim i%
    total = 0
    For i = 1 To n
        total = total + i
    Next
End Sub


从第一段代码我们就可以很明显的看出来,在Command1和Command2都使用相同的Click事件求累加和的代码,是不是看起来很重复,但如果我们使用Sub过程来编写是不是减少了这种重复性,提高了代码的可重用性呢?


从上面我分别对“使用Sub过程”和“不使用Sub过程”的介绍,你是不是对“过程”这一概念面纱下的神秘越来越感兴趣了呢?这就是代码的神奇魅力!

相关文章
|
1月前
|
算法 调度
多级反馈队列算法的具体实现过程是怎样的?
【10月更文挑战第25天】多级反馈队列算法通过动态调整进程的优先级和在不同优先级队列之间的转移,能够较好地适应不同类型进程的需求,兼顾了短作业优先、I/O密集型作业优先等多种调度策略的优点,提高了系统的整体性能和资源利用率,同时也能保证对实时性要求较高的进程能够及时得到响应。
59 4
|
内存技术
AS3使用过程中问题总结
AS3使用过程中问题总结
66 0
一次有趣的学习过程
嗨!大家好,我是小蚂蚁。 今天这篇文章记录的是一次有趣的学习过程,起因是昨天我在学员群里发了这样的一条信息。 这原本是一位学员的需求,想要在游戏中做一个文字逐个出现的打字机效果,因为我暂时还没有写与此相关的教程(也没有考虑过如何实现),所以就把这个问题抛了出来,顺便看一下大家的想法。 没想到的是这下可热闹了,下面记录的就是关于这次有趣的学习的全过程。
92 0
一道优化过程的题
一道优化过程的题
103 0
|
弹性计算 Linux 网络安全
学习过程中的Q&A
macbook以及linux的操作
103 0
|
NoSQL Ubuntu MongoDB
使用过程心得
一些常用操作和常见问题
使用过程心得
|
安全
从想法到设计的过程
在接下来的几节里,我会向你展示游戏制作的整个流程,从开始的一个粗略的想法,到游戏设计,再到最终的游戏制作。
147 0
从想法到设计的过程
|
Java Spring
CommpetableFuture使用anyOf过程中的一些优化思考
CommpetableFuture使用anyOf过程中的一些优化思考
|
小程序 Java C语言
关于阿里云的使用过程
一、自我情况 二、使用过程 三、心得体会