function和sub有什么区别啊,求老师讲下
vb吧
全部回复
仅看楼主
level 1
扁平子 楼主
function和sub有什么区别啊,求老师讲下
2010年06月16日 07点06分 1
level 1
sub 一般是用在vb的窗体或结构的声明中。而function一般是定义过程。如果要自定义结构,这两种有时是可以混用的(我就经常混用)。但是如果定义过程,一般是用function。
2010年06月16日 09点06分 2
level 11
两者都是用来声明函数的。SUB无返回值,速度快。FUNCTION有返回值,速度慢。情况就是这样。
2010年06月16日 09点06分 4
level 1
哦,原来我错解了,谢3、4楼更正!
2010年06月16日 12点06分 5
level 7
回复:4楼
FUNCTION因为要创建内存,慢。
2010年06月18日 13点06分 6
level 11
刚做了个小实验.编译以下代码,然后反汇编看了下.
Dim i As Long
Private Sub Form_Load()
     Call TestSub
     Call TestFun
     MsgBox "Done"
End Sub
Sub TestSub()
     i = 1
     MsgBox "TestSub"
End Sub
Function TestFun() As Long
     i = 2
     MsgBox "TestFun"
     TestFun = i
End Function
'---------------------------
一开始是堆栈的分配.
sub      esp, 88h ;这是TestSub的
sub      esp, 8Ch ;这是TestFun的,比TestSub多分配了4字节用于返回值.
'---------------------------
中间部分多了一句
mov      [e
bp
-18h], edi ;为返回值附初始值,也就是0.
'---------------------------
函数末尾TestFun比TestSub多了下面2句,对应代码中的"TestFun = i".
mov      eax, [esi
+3
4h] ;把全局变量i的值放进寄存器eax.
mov      [ebp-18h], eax ;把寄存器eax的值返回.
'---------------------------
总结.
VB中Function和Sub的处理方式基本一致,在不考虑返回值的情况下,速度差异为1条汇编指令,可以忽略.

2010年06月18日 14点06分 7
世上无难事,只怕楼上人啊
2014年10月12日 02点10分
[大拇指]向你看齐
2015年07月24日 07点07分
回复
��������
:@《顾名思义》
2015年07月24日 08点07分
挖坟了咋办。。。
2015年07月24日 08点07分
level 9
对于这种刚发的帖子,我总是毫不犹豫的顶了。如果火了就是个
前排
,可以混个脸熟,说不定谁好心就给粉了。如果沉了,还可以给楼主
挽尊
,说不定楼主一时感动也给粉了…
2014年10月13日 06点10分 10
level 1
sub是过程,之间不能退出。
但Function能退出。如下,
If tmp = "" Then
Debug.Print "tmp为空"
Exit Function
End If
2015年09月02日 11点09分 11
吧务
level 13
一般说来,
  用多个数据来计算某一个数据,用自定函数【Function 函数名(形参表) As 数据类型】,计算出来的数据要放在【函数名】中。也就是说,整个模块中一定要有一条语句是【函数名 = 表达式】。自定义函数一定会有数据传递。
  用多个数据(或者不需要传递数据)来完成一项比较通用的任务(例如输出一张表格,产生打印动作,让文字按某种方式移动,弹出一个对话框……),一般用子过程【Sub 子过程名() 】。子过程(又叫子程序)如果不带参数,不负责数据传递。
2015年09月02日 12点09分 12
1