本帖最后由 robintt 于 2009-09-13 14:50:02 编辑

解决方案 »

  1.   

    Sub Function 是一回事,区别是,Function有返回值,Sub没有。
    Class是类,窗体和模块可以看作一种特殊的类。
    窗体、模块、类里面是过程和函数。
      

  2.   

    Sub 过程
    子过程是在响应事件时执行的代码块。将模块中的代码分成子过程后,在应用程序中查找和修改代码变得更容易了。子过程的语法是:
    [Private|Public][Static]Sub procedurename (arguments)
    statementsEnd Sub每次调用过程都会执行 Sub 和 End Sub 之间的 statements。可以将子过程放入标准模块、类模块和窗体模块中。按照缺省规定,所有模块中的子过程为 Public(公用的),这意味着在应用程序中可随处调用它们。
    -------------------------------------
    Funtion 过程
    Visual Basic 包含内置的、或内部的函数,如 Sqr、Cos 或 Chr。此外,还可用 Function 语句编写自己的 Function 过程。函数过程的语法是:
    Private|Public][Static]Function procedurename (arguments) [As type]
    statementsEnd Function与 Sub 过程一样,Function 过程也是一个独立的过程,可读取参数、执行一系列语句并改变其参数的值。与子过程不同,Function 过程可返回一个值到调用的过程。在Sub 过程与Function 过程之间有三点区别: 
    一般说来,让较大的语句或表达式的右边包含函数过程名和参数 (returnvalue = function),这就调用了函数。与变量完全一样,函数过程有数据类型。这就决定了返回值的类型。(如果没有 As 子句,缺省的数据类型为 Variant。)给 procedurename 自身赋一个值,就可返回这个值。Function 过程返回一个值时,该值可成为较大表达式的一部分。 
    例如,下面是已知直角三角形两直角边的值,计算第三边(斜边)的函数:Function Hypotenuse (A As Integer, B As Integer) As String
       Hypotenuse = Sqr (A ^ 2 + B ^ 2)
    End Function在 Visual Basic 中调用 Function 过程的方法和调用任何内部函数的方法是一样的:Label1.Caption = Hypotenuse(CInt(Text1.Text), _
    CInt(Text2.Text))
    strX = Hypotenuse (Width, Height)
    --------------------------------
    代码模块Visual Basic 的代码存储在模块中。模块有三种类型:窗体、标准和类。简单的应用程序可以只有一个窗体,应用程序的所有代码都驻留在窗体模块中。而当应用程序庞大复杂时,就要另加窗体。最终可能会发现在几个窗体中都有要执行的公共代码。因为不希望在两个窗体中重复代码,所以要创建一个独立模块,它包含实现公共代码的过程。独立模块应为标准模块。此后可以建立一个包含共享过程的模块库。每个标准模块、类模块和窗体模块都可包含: 声明。可将常数、类型、变量和动态链接库 (DLL) 过程的声明放在窗体、类或标准模块的模块级。过程。Sub、Function 或者 Property 过程包含可以作为单元来执行的代码片段。本章后面的“过程概述”一节中将讨论这些内容。 
    窗体模块
    窗体模块(文件扩展名为 .FRM )是大多数 Visual Basic 应用程序的基础。窗体模块可以包含处理事件的过程、通用过程以及变量、常数、类型和外部过程的窗体级声明。如果要在文本编辑器中观察窗体模块,则还会看到窗体及其控件的描述,包括它们的属性设置值。写入窗体模块的代码是该窗体所属的具体应用程序专用的;它也可以引用该应用程序内的其它窗体或对象。标准模块
    标准模块(文件扩展名为 .BAS)是应用程序内其它模块访问的过程和声明的容器。它们可以包含变量、常数、类型、外部过程和全局过程的全局(在整个应用程序范围内有效的)声明或模块级声明。写入标准模块的代码不必绑在特定的应用程序上;如果不小心用名称引用窗体和控件,则在许多不同的应用程序中可以重用标准模块。类模块
    在 Visual Basic 中类模块(文件扩展名为 .CLS)是面向对象编程的基础。可在类模块中编写代码建立新对象。这些新对象可以包含自定义的属性和方法。实际上,窗体正是这样一种类模块,在其上可安放控件、可显示窗体窗口
      

  3.   

    你需要返回值就用Function,仅执行过程不需要返回值就用Sub
      

  4.   

    public Function aa(b as integer,c as integer) as integer 
    ---------- 
    ---------- 
    ----------- 
    end function
    它写在form1或form2或标准模块里都可以只是调用方法不同:1、写在form1里,在form1调用,用以下方式:
    Private Sub Command1_Click(Index As Integer) 
    dim i as integer 
    i=aa(1,2) 
    End Sub 
    2、写在form1里,在form2调用,用以下方式:
    Private Sub Command1_Click(Index As Integer) 
    dim i as integer 
    i=form1.aa(1,2) 
    End Sub 
    3、写在标准模块里,在form1或form2里,都可以用以下方式调用
    Private Sub Command1_Click(Index As Integer) 
    dim i as integer 
    i=aa(1,2) 
    End Sub 
    4、sub和function都可得到返回值,只是方法不同。
       sub不能当普通函数一样使用
       function可能当普通函数一样使用。
    参考我上面给你的回贴。
      

  5.   

    FUNCTION 是函数 有返回值sub是过程,无返回值如果你弄function 却不给他弄返回值,则会返回个不确定值,所以若无返回值,就应弄个sub。类 ......