使计算机执行某种操作:编写您的第一个过程

更新:2007 年 11 月

在本课中,您将学习如何创建“过程”(即可以从其他代码块运行的独立代码块)。 然后,您将学习如何为过程创建参数。

过程就是通知程序执行某项操作的代码块。虽然您可能还没有意识到,但您在以前的课程中已经使用了过程。例如,MsgBox 函数就是一个内置过程,此过程执行显示对话框的操作。

虽然 Visual Basic 有很多内置过程可用来执行常见操作,但总会存在一些情况,您希望程序执行内置过程无法处理的操作。例如,MsgBox 函数无法显示包含图片的对话框。您必须自己编写过程来完成此任务。

什么是过程?

过程是可以从其他代码块中运行的自我包含的代码块。一般而言,每个过程都包含完成一项任务所需的代码。例如,您可能有一个名为 PlaySound 的过程,此过程包含播放波形文件所需的代码。虽然您可以在程序每次需要发出声音时编写相同的代码来播放声音,但创建一个可以从程序中的任何位置调用的过程更有意义。

过程是通过在代码中调用它来运行或执行的。例如,若要运行 PlaySound 过程,只需向程序中添加一行包含过程名称的代码,如此处所示。

PlaySound()

这样就可以了!当程序运行到该行时,它将跳至 PlaySound 过程并执行其中所包含的代码。然后程序将跳回至紧跟在 PlaySound 调用后的下一行。

您可以随意调用任意多个过程。过程将按调用的顺序运行。例如,您可能还有一个名为 DisplayResults 的过程;若要在执行 PlaySounds 过程后执行它,请按此处所示调用这两个过程。

PlaySounds()

DisplayResults()

函数和 Sub

有两种过程:函数和子例程(有时也称为“Sub”)。函数对调用它的过程返回一个值,而 Sub 只执行代码。如下例所示,当向程序中添加一行包含 Sub 的名称的代码时,将调用对应的 Sub。

DisplayResults

函数则不同,因为函数不仅执行代码,还要返回一个值。例如,设想一个名为 GetDayOfWeek 的函数,它返回一个 Integer 以指示当天是星期几。可以按如此处所示的方式调用此函数:先声明一个存储返回值的变量,然后将返回值赋给该变量以供以后使用。

Dim Today As Integer

Today = GetDayOfWeek

在本示例中,将函数返回的值复制到名为 Today 变量中并存储以便稍后使用。

编写过程

通过先编写过程声明来编写过程。 过程声明将执行以下几项任务。指出过程是一个函数还是一个 Sub,命名过程,并详细说明过程可能具有的任何参数。(本课后面将详细讨论参数)。下面是一个简单过程声明的示例。

Sub MyFirstSub()
End Sub

Sub 关键字通知程序此过程是一个 Sub 并且不返回值。紧接着是 Sub 的名称 (MyFirstSub),空括号表示此过程没有任何参数。 最后,End Sub 关键字表示此例程的结尾。此 Sub 要执行的所有代码都放在这两行之间。

声明函数与此类似,但还有一个额外的步骤,即必须指定返回类型(例如 Integer、String 等)。例如,返回一个 Integer 的函数可能如下所示。

Function MyFirstFunction() As Integer
End Function

As Integer 关键字表示此函数将返回一个 Integer 值。要从函数中返回值,请使用 Return 关键字,如下例所示。

Function GetTheNumberOne() As Integer
    Return 1
End Function

此过程将返回数字 1。

试一试!

创建过程

  1. 在“文件”菜单上单击“新建项目”。

  2. 在“新建项目”对话框的“模板”窗格中,单击“Windows 应用程序”。

  3. 在“名称”框中键入 MyFirstProcedure,然后单击“确定”。

    一个新的 Windows 窗体项目随即打开。

  4. 双击该窗体以打开代码编辑器。

  5. 在代码编辑器中,找到 End Class 行。这是组成窗体的代码部分的结尾。在紧靠此行的前面,添加下面的过程:

    Function GetTime() As String
      Return CStr(Now)
    End Function
    

    此函数使用内置的 Now 过程接收当前时间,然后使用 CStr 函数将 Now 返回的值转换为用户可以理解的 String。最后,该 String 值作为函数的结果被返回。

  6. 在上一步中添加的函数上方,添加下面的 Sub。

    Sub DisplayTime()
      MsgBox(GetTime)
    End Sub
    

    此 sub 调用函数 GetTime 并将其返回的结果显示在消息框中。

  7. 最后,向调用 DisplayTime Sub 的 Form1_Load 事件处理程序中添加一行,如此处所示。

    DisplayTime()
    
  8. 按 F5 运行程序。

    当程序启动时,将执行 Form1_Load 事件过程。此过程调用 DisplayTime sub,因此程序执行跳至 DisplayTime sub 过程。此 sub 接着调用 GetTime 函数,因此程序执行随后跳至 GetTime 函数。此函数返回一个 String 表示 DisplayTime sub 过程的时间,此 sub 过程随后将在一个消息框中显示该字符串。此 sub 执行完毕后,程序继续正常执行并显示窗体。

函数和 Sub 中的参数

有时您必须为过程提供其他信息。例如,在 PlaySound 过程中,您可能想要播放几种不同声音中的一种。您可以通过使用参数提供有关要播放的声音的信息。

参数与变量非常相像。它们有类型和名称,并像变量一样存储信息。它们可以像变量一样在过程中使用。参数和变量的两个主要区别如下所示:

  • 参数是在过程声明中声明的,而不是在单个代码行中声明的。

  • 参数只能在声明它们的过程中使用。

在过程声明中,参数在紧跟着过程名的括号中声明。As 关键字用来声明类型,并且每个参数前面一般都有 ByVal 关键字。如果您不添加此关键字,Visual Basic 会自动添加它,并且它有一个相当高级的函数(不在本课讲解的范围内)。

此处显示了一个带有参数的 Sub 的示例。

Sub PlaySound(ByVal SoundFile As String, ByVal Volume As Integer)
  My.Computer.Audio.Play(SoundFile, Volume)
End Sub

您随后就可以按此处所示用这些参数的值调用此 Sub。

PlaySound("Startup.wav", 1)

也可以用与声明 Sub 参数相同的方式声明函数参数。

试一试!

创建带有参数的函数

  1. 在“文件”菜单上单击“新建项目”。

  2. 在“新建项目”对话框的“模板”窗格中,单击“Windows 应用程序”。

  3. 在“名称”框中键入 parameters,然后单击“确定”。

    一个新的 Windows 窗体项目随即打开。

  4. 将两个“Textbox”控件从“工具箱”中拖动到窗体上。

  5. 将一个“Button”控件从“工具箱”中拖动到窗体上。

  6. 双击该“Button”以打开代码编辑器。

  7. 紧接着 Button1_Click 事件处理程序的 End Sub 行后面,添加下面的过程:

    Function AddTwoNumbers(ByVal N1 As Integer, ByVal N2 As Integer) _
      As Integer
      Return N1 + N2
    End Function
    
  8. 在 Button1_Click 过程中,添加下面的代码:

    Dim aNumber As Integer = CInt(Textbox1.Text)
    Dim bNumber As Integer = CInt(Textbox2.Text)
    MsgBox(AddTwoNumbers(aNumber, bNumber))
    

    此代码声明两个整数,并将两个文本框中的文本转换为整数值。然后它将这两个整型值传递给 AddTwoNumbers 函数并在消息框中显示返回值。

  9. 按 F5 运行程序。

  10. 在每个文本框中分别键入一个数字值,然后单击按钮。这两个数相加并在消息框中显示结果。

后续步骤

在本课中,您学习了函数和 Sub 的区别,以及如何创建这两种过程。此外,您还学习了如何调用过程以及如何创建带有参数的过程。

在下一课中,您将学习如何使用 For...Next 语句来重复操作。

下一课:使程序重复操作:用 For...Next 循环进行循环

请参见

任务

比较:使用表达式比较值

概念

Visual Basic 中的过程