第二章、vb6的函数与过程

您所在的位置:网站首页 vb怎么编写API函数 第二章、vb6的函数与过程

第二章、vb6的函数与过程

2024-07-04 21:51| 来源: 网络整理| 查看: 265

日期:2021年04月25日 作者:Commas 注释:网络上没有一个比较系统的VB6或者VBA的教程,于是打算利用中午休息的时间写一写这方面的教程,不喜欢写得很文绉绉,一切都以常用为前提进行介绍。因为要覆盖更多读者,所以本系列文章有些地方可能会介绍比较地通俗易懂,当然也会包含一些比较有意思的知识点,不喜勿喷,有问题敬请指出,有疑惑欢迎留言,大家一起讨论,共同进步,谢谢大家(^ _ ^) (^ _ ^)

目录

文章目录 一、前言二、有关于函数或过程的关键字三、过程 Sub1)无参过程 Sub2)带参过程 Sub 四、函数 Function1)无参函数2)带参函数

一、前言

相信接触过其他语言的小伙伴们,最熟悉不过的就是函数;而在VB6中,我们所熟知的所谓函数一分为二——函数与过程,如下图所示: 在这里插入图片描述

过程:一定没有返回值; 函数:一般有返回值,也允许没有返回值;

二、有关于函数或过程的关键字

声明函数或过程之前,我们先要了解一些有关于函数或过程的关键字,具体如下表所示:

修饰符说明Public声明公开的过程或者函数,本模块可以调用,其它模块也可以调用Private声明私有的过程或者函数,仅限本模块调用ByVal表示修饰的参数按值传递ByRef表示修饰的参数按地址传递,ByRef是VB的缺省选项Optional表示修复的参数是可选参数,在调用函数或过程可填可不填,一般位于最后的参数

1、窗体Form、模块Module以及类模块Class等等,都称之为以上我们所说的“模块”; 2、值得指出的是,对象一定要用ByRef传递,传递地址(引用),操作同一块内存空间,即同一个对象;

三、过程 Sub 1)无参过程 Sub

语法如下:

[Public\Private] Sub subName '过程逻辑写在这儿 End Sub

如果过程Sub前面没有写关键字,那么缺省值为Public; 不过还是比较建议不要省略,好的习惯,是好的代码的开始;

示例如下:

Option Explicit Private Sub Form_Load() On Error Resume Next '调用过程 Call sayHelloVB Call sayGoodMorning End Sub '定义私有无参过程:仅本模块可调用 Private Sub sayHelloVB() On Error Resume Next MsgBox "Hello VB6" End Sub '定义公开无参过程:其它模块也可以调用 Public Sub sayGoodMorning() On Error Resume Next MsgBox "Good Morning" End Sub 2)带参过程 Sub

语法如下:

[Public\Private] Sub subName(ByVal p1 As 变量类型, ByRef p2 As 变量类型, Optional p3 As 变量类型 = 默认值) '过程逻辑写在这儿 End Sub

参数可以是一个或者很多个,根据自己的需求进行前缀修饰; 对象的传递,一定是ByRef,其它基本上都可以使用ByVal; Optional一定是最后面的参数,不可以写在ByVal或ByRef之前;

示例如下:

Option Explicit Private Sub Form_Load() On Error Resume Next '调用过程 Call sayHelloVB("张三") '1)不传参调用 Call sayGoodMorning '2)传参调用 Call sayGoodMorning("李四") Call sayMe("王五", "打篮球") End Sub '定义私有无参过程:仅本模块可调用 Private Sub sayHelloVB(ByVal sName As String) On Error Resume Next MsgBox "Hello VB6,我是" & sName End Sub '定义公开无参过程:其它模块也可以调用 Public Sub sayGoodMorning(Optional sName As String = "") On Error Resume Next Dim sMSG As String sMSG = "早上好" If sName "" Then sMSG = sName & "," & sMSG End If MsgBox sMSG End Sub '定义公开无参过程:其它模块也可以调用 Public Sub sayMe(ByVal sName As String, ByVal sHobboy As String, _ Optional sSex As String = "男") On Error Resume Next Dim sMSG As String sMSG = "大家好,我是{0},性别{1},爱好{2}" sMSG = Replace(sMSG, "{0}", sName) sMSG = Replace(sMSG, "{1}", sSex) sMSG = Replace(sMSG, "{2}", sHobboy) MsgBox sMSG End Sub 四、函数 Function 1)无参函数

语法如下:

[Public\Private] Function functionName() As 函数返回值的变量类型 '函数逻辑写在这儿 functionName = 函数返回值 End Function

如果函数Function前面没有写关键字,那么缺省值为Public; 不过还是比较建议不要省略,好的习惯,是好的代码的开始; 另外,函数的返回值类型是需要指定的;

示例如下:

Option Explicit Private Sub Form_Load() On Error Resume Next '调用函数,不接收返回值 Call sayHelloVB '调用函数,接收返回值 Dim pIsOK As Boolean pIsOK = sayHelloVB Debug.Print pIsOK End Sub '定义私有无参函数:仅本模块可调用 Private Function sayHelloVB() As Boolean On Error Resume Next MsgBox "Hello VB6,我是" & Me.Text1.Text If Err 0 Then sayHelloVB = False Else sayHelloVB = True End If End Function 2)带参函数

语法如下:

[Public\Private] Function functionName(ByVal p1 As 变量类型, ByRef p2 As 变量类型, Optional p3 As 变量类型 = 默认值) As 函数返回值的变量类型 '函数逻辑写在这儿 functionName = 函数返回值 End Function

参数可以是一个或者很多个,根据自己的需求进行前缀修饰; 对象的传递,一定是ByRef,其它基本上都可以使用ByVal; Optional一定是最后面的参数,不可以写在ByVal或ByRef之前;

示例如下:

Option Explicit Private Sub Form_Load() On Error Resume Next '调用函数 Dim dblZ As Double dblZ = add(1, 2) Debug.Print dblZ '1) dblZ = factorial(-1) '2) dblZ = factorial() Debug.Print dblZ '3) dblZ = factorial(0) Debug.Print dblZ '4) dblZ = factorial(4) Debug.Print dblZ End Sub '函数作用:两数求和 '定义私有有参函数:仅本模块可调用 Private Function add(ByVal dblX As Double, ByVal dblY As Double) As Double On Error Resume Next add = dblX + dblY End Function '函数作用:求阶层 '定义私有有参函数:仅本模块可调用 Public Function factorial(Optional n As Long = 0) As Double On Error Resume Next If n


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3