事件过程往往是由用户事件触发。
1. sub过程的定义
定义格式: [private|public | static] sub 过程名([参数表]) 语句块 [exit sub] end sub 说明: · 局部(private)过程、全局(公用, public)过程和静态(static)过程 · 参数表定义格式: [byval |byref] 变量名 [as 数据类型] … byval表示该参数按值传递,byref表示该参数按地址传递 · 通过参数表传送参数 sub过程可以获取调用过程传送的参数,也能通过参数表的参数,把计 算结果传回给调用过程
过程建立说明:
sub过程可以保存在两种模块中:窗体模块(.frm)和标准模块(.bas)
可以在代码窗口中直接键入来创建sub过程 选择“工具”菜单中的“添加过程”命令
3. sub过程的调用
调用过程的语法:
事件过程是通过事件驱动和由系统自动调用的,而sub过程则必须通过调用 语句实行调用 调用sub过程有以下两种方法: (1)使用call语句。格式: call 过程名([实参表]) (2)直接使用过程名,格式: 过程名[实参表] 例如,调用名为subcal的过程: call subcal(10) subcal 10
注意:实际参数列表,是往被定义过程的形式参数传递的数据;因 此,其数据类型需要和形式参数保持一致。实际参数可以是常量、 变量、数组,或复杂表达式,但无论是什么都必须有确定的值。
例3.18 使用sub过程示例:计算5! + 10!
因为计算5!和10!都要用到阶乘n! (n!=1×2×3×…×n) 所以把计算n!编成sub 过程 采用print直接在窗体上输出结果,程序代码:
private sub form_click() dim y as long, s as long call jc(5, y) s=y call jc(10, y) s=s+y
private sub jc(n as integer, t as long) dim i as integer t=1 for i = 1 to n t=t*i next i end sub 注意参数n及t的调用情况
print "5! + 10! ="; s
end sub 程序运行结果: 5! + 10! = 3628920
通用过程和事件过程的关系
3.7.2
按地址传递和按值传递
1. 按地址传递
vb默认的数据传递方式 按地址传递(关键字byref):把实参变量的内存地址传递给被调过程(如 sub过程),即形参与实参使用相同的内存地址单元,这样通过过程就可以改变 变量本身的值 实参必须是变量,不能采用常量或表达式。
例3.18中,form_click()事件过程是通过“call jc(5,y)‖和“call jc(10,y)‖ 来调用过程jc(n,t)的,其中采用的第二个参数就是按地址来传送数据的
2. 按值传递
按值传递(关键字byval):通过常量传递实际参数,即传递参数值而不是传 递它的地址
因为通用过程不能访问实参的内存地址,因而在通用过程中对形参的任何 操作都不会影响实参
参数传递方式示例1
private sub form_click() dim x as integer x=5 sub test1(byval t as integer) t=t+5 end sub sub test2(s as integer) s=s-5 end sub
print "执行test1前,x="; x
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-29087-20.html
美国可以肆意践踏
中国的实体经济说到底就是你马云搞垮的
没遇到黑天鹅时