Function和Sub的区别?我自己定义的函数,用这个2个好象都可以!好象没什么不一样的

解决方案 »

  1.   

    Function(函数)可以返回处理结果
    Sub(过程)不能返回处理结果
      

  2.   

    function 有返回值
    sub 没有!
      

  3.   

    那就是说Sub只能是用它的方法,只有Function才能得到返回值?例如:
    Public Function ConnectionDB(strServerName As String, strDBName As String, strUserName As String, strPass As String) As Long
       'strServerName---数据库服务器名
       'strDBName---数据库名
       'strUserName---登录用户名
       'strPass---用户密码
       Dim blnConnState As Boolean
       On Error GoTo errHandle
       Set cn = New ADODB.Connection
       cn.ConnectionTimeout = 5
       cn.CursorLocation = adUseClient
       cn.Provider = "SQLOLEDB.1;Persist Security Info=False;Initial Catalog=" & strDBName & ";User Id=" & strUserName & ";Password=" & strPass & ";Data Source=" & strServerName
       cn.Open
       blnConnState = GetState(cn.State)
       If blnConnState Then
          ConnectionDB = 1 '连接成功
       End If
       
       Exit Function
    errHandle:
       Select Case Err.Number
          Case -2147467259
             ConnectionDB = 0 '连接失败
          Case -2147217843
             ConnectionDB = 3 '非法用户
          Case Else
             ConnectionDB = 100
       End Select
    End Function
    在其它地方引用可以使用 X=ConnectionDB(……),X会被付值是不是用Sub就不能用    X=ConnectionDB(……)这样的格式??
      

  4.   

    是的。Sub不能用    X=ConnectionDB(……)这样的格式,而必须使用call ConnectionDB(……)Function可以使用 X=ConnectionDB(……),X会被赋值。Function也可以使用call ConnectionDB(……)这样的格式,这样则放弃返回值
      

  5.   

    Function 占内存大;Sub 占内存小
      

  6.   

    在操作一个过程的时候
    Function x()
    .....
    end Function 
    用的是后可以直接写个
    X
    还可以用函数带返回值的形式
    把一个变量的值改变
    sub仅仅是个过程
      

  7.   

    Function()定义过程(可以带参数)有返回值.
    Sub()不能带参数.没有返回值.
      

  8.   

    楼上的,SUB是可以带参数的,它与Function的最大区别是:Function可以返回值,也可以不返回;而SUB则一定不能返回值.
      

  9.   

    sub 没有返回值,

    function 有返回值!
    其他的好像没有什么!
    望大虾们指教!