声明 Sub 过程的名称、参数以及构成其主体的代码。

[Public [Default] | Private] Sub name [(arglist)] 
   [statements]
   [Exit Sub]
   [statements]
End Sub
参数
Public 
表示 Sub 过程可被所有脚本中的所有其他过程访问。 
Default 
只与 类块中的Public 关键字连用，用来表示 Sub 过程是类的默认方法。如果在类中指定了不止一个Default过程，就会出错。 
Private 
表示 Sub 过程只可被声明该过程的脚本中的其他过程访问。 
name 
Sub 的名称，遵循标准变量命名规则。 
arglist 
代表在调用时要传递给 Sub 过程的参数的变量列表。用逗号隔开多个变量。 
statements 
在 Sub 过程主体内所执行的任何语句组。 
arglist 参数包含下列语法和部分：

[ByVal | ByRef] varname[( )]
参数
ByVal 
表示该参数是按值传递的。 
ByRef 
表示该参数按引用传递。 
varname 
代表参数的变量名称，遵循标准变量命名规则。 
说明
如没有显式地指定使用 Public 或 Private，则 Sub 过程默认为公用，即它们对于脚本中的所有其他过程都是可见的。Sub 过程中局部变量的值在调用过程中不被保留。

不能在任何其他过程（例如，Function 或 Property Get）中定义 Sub 过程。

使用 Exit Sub 语句可以立即从 Sub 过程中退出。程序继续执行调用 Sub 过程的语句之后的语句。可以在 Sub 过程中任意位置出现任意个 Exit Sub 语句。

与 Function 过程相似之处是：Sub 过程是一个可以获取参数，执行一系列语句以及可改变其参数的值的独立过程。而与 Function 过程不同之处是：Function 过程可以返回值，而 Sub 过程不能用于表达式中。

可以使用过程名并跟随相应的参数列表来调用 Sub 过程。关于如何调用 Sub 过程的详细说明信息，请参阅 Call 语句。

警告   Sub 过程可以是递归的，即该过程可以调用自己来完成某个给定的任务。但是递归可能会导致堆栈溢出。
在 Sub 过程中使用的变量分为两类：一类是在过程内显式声明的，另一类则不是。在过程内显式声明的变量（使用 Dim 或等效方法）总是局部变量。对于那些没有在过程中显式声明的变量也是局部的，除非在该过程外更高级别的位置显式地声明它们。

警告   过程可以使用没有在过程内显式声明的变量，但只要有任何 script 级定义的名称与之同名，就会产生名称冲突。如果过程中引用的未声明的变量与其他的过程、常数或变量的名称相同，则会认为过程引用的是脚本级的名称。要避免这类冲突，请使用 Option Explicit 语句可强制显式声明变量。
要求
版本 1
