标题：SUB
汇编指令
SUB OP1,OP2 
将OP1-OP2的值,保存在OP1中,如:
SUB [EAX],1
以EAX寄存器为内存地址,将该地址的值减1,类似C/C++中的 i--;
Sub语句
描述声明 Sub 过程的名称、参数以及构成其主体的代码。 语法[Private | Public | Friend] [Static] Sub name [(arglist)] 
[statements]
[Exit Sub]
[statements]
End Sub
Sub 语句的语法包含下面部分：
部分
描述
Public
可选的。表示所有模块的所有其它过程都可访问这个Sub 过程。 如果在包含 Option Private 的模块中使用，则这个过程在该工程外是不可使用的。
Private
可选的。表示只有在包含其声明的模块中的其它过程可以访问该Sub 过程。
Friend
可选的。只能在类模块中使用。表示该Sub 过程在整个工程中都是可见的，但对对象实例的控制者是不可见的。
Static
可选的。表示在调用之间保留Sub 过程的局部变量的值。Static 属性对在 Sub 外声明的变量不会产生影响，即使过程中也使用了这些变量。
name
必需的。Sub 的名称；遵循标准的变量命名约定。 
arglist
可选的。代表在调用时要传递给Sub 过程的参数的变量列表。多个变量则用逗号隔开。
statements
可选的。Sub 过程中所执行的任何语句组。
参数其中的arglist 参数的语法以及语法各个部分如下：
[Optional] [ByVal | ByRef] [ParamArray] varname[( )] [Astype] [=defaultvalue]
部分
描述
Optional
可选的。表示参数不是必需的关键字。如果使用了该选项，则arglist 中的后续参数都必须是可选的，而且必须都使用Optional 关键字声明。如果使用了ParamArray，则任何参数都不能使用 Optional。
ByVal
可选的。表示该参数按值传递。
ByRef
可选的。表示该参数按地址传递。ByRef 是 Visual Basic 的缺省选项。
ParamArray
可选的。只用于arglist 的最后一个参数，指明最后这个参数是一个Variant 元素的Optional 数组。使用ParamArray 关键字可以提供任意数目的参数。ParamArray 关键字不能与 ByVal，ByRef，或 Optional 一起使用。
varname
必需的。代表参数的变量的名称；遵循标准的变量命名约定。
type
可选的。传递给该过程的参数的数据类型，可以是 Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal（目前尚不支持）、Date、String（只支持变长）、Object 或 Variant。如果没有选择参数 Optional，则可以指定用户定义类型，或对象类型。
defaultvalue
可选的。任何常数或常数表达式。只对Optional 参数合法。如果类型为 Object，则显式的缺省值只能是 Nothing。
说明如果没有使用Public、Private 或Friend 显式指定，Sub 过程按缺省情况就是公用的。如果没有使用 Static，则在调用之后不会保留局部变量的值。Friend 关键字只能在类模块中使用。不过 Friend 过程可以被工程的任何模块中的过程访问。Friend 过程不会在其父类的类型库中出现，且 Friend 过程不能被后期绑定。
小心 Sub 过程可以是递归的；也就是说，该过程可以调用自己来完成某个特定的任务。不过，递归可能会导致堆栈上溢。通常 Static 关键字和递归的 Sub 过程不在一起使用。
所有的可执行代码都必须属于某个过程。不能在别的Sub、Function 或Property 过程中定义 Sub 过程。
Exit Sub 语句使执行立即从一个Sub 过程中退出。程序接着从调用该 Sub 过程的语句下一条语句执行。在 Sub 过程的任何位置都可以有 Exit Sub 语句。
Sub 过程与Function 过程的相似之处是：它们都一个可以获取参数，执行一系列语句，以及改变其参数的值的独立过程。而与 Function 过程不同的是：带返回值的 Sub 过程不能用于表达式。
可以使用过程名并后跟相应的参数列表来调用一个Sub 过程。请参阅 Call 语句关于如何调用 Sub 过程的详细的说明信息。
在Sub 过程中使用的变量分为两类：一类是在过程内显式定义的，另一类则不是。在过程内显式定义的变量（使用 Dim 或等效方法）都是局部变量。对于使用了但又没有在过程中显式定义的变量，除非其在该过程外更高级别的位置有显示地定义，否则也是局部的。
小心 过程可以使用没有在过程内显式定义的变量，但只要有任何在模块级别定义的名称与之同名，就会产生名称冲突。如果过程中使用的未定义的变量与别的过程，常数，或变量的名称相同，则认为过程使用的是模块级的名称。显式定义变量就可以避免这类冲突。可以使用Option Explicit 语句来强制显式定义变量。
注意 不能使用GoSub、GoTo 或Return 来进入或退出 Sub 过程。
部分描述
Public 表示 Sub 过程可被所有 Script 中的所有其他过程访问。 
Private 表示 Sub 过程只可被声明该过程的 Script 中的其他过程访问。 
Name Sub 的名称，遵循标准变量命名约定。 
Arglist 代表在调用时要传递给 Sub 过程的参数的变量列表。用逗号隔开多个变量。 
Statements 在 Sub 过程主体内所执行的任何语句组。 
arglist 参数包含下列语法和部分：[ByVal | ByRef] varname[( )] 
部分 描述 
ByVal 表示该参数按值传递。 
ByRef 表示该参数按引用传递。 
Varname 代表参数的变量名称，遵循标准变量命名约定。
说明
如没有显式地指定使用 Public 或 Private，则 Sub 过程默认为公用，即它们对于 Script 中的所有其他过程都是可见的。Sub 过程中局部变量的值在调用过程中不被保留。 
所有可执行代码必须包含于过程中。不能在另一个 Sub 或 Function 过程中定义一个 Sub 过程。 
使用 Exit Sub 语句可以立即从 Sub 过程中退出。程序继续执行调用 Sub 过程的语句之后的语句。可以在 Sub 过程中任意位置出现任意个 Exit Sub 语句。 
与 Function 过程相似之处是：Sub 过程是一个可以获取参数，执行一系列语句以及可改变其参数的值的独立过程。而与 Function 过程不同之处是：Function 过程可以返回值，而 Sub 过程不能用于表达式中。 
可以使用过程名并跟随相应的参数列表来调用 Sub 过程。关于如何调用 Sub 过程的详细说明信息，请参阅 Call 语句。 
小心 Sub 过程可以是递归的，即该过程可以调用自己来完成某个给定的任务。但是递归可能会导致堆栈溢出。 
在 Sub 过程中使用的变量分为两类：一类是在过程内显式声明的，另一类则不是。在过程内显式声明的变量（使用 Dim 或等效方法）总是局部变量。对于那些没有在过程中显式声明的变量也是局部的，除非在该过程外更高级别的位置显式地声明它们。 
小心 过程可以使用没有在过程内显式声明的变量，但只要有任何 script 级定义的名称与之同名，就会产生名称冲突。如果过程中引用的未声明的变量与其他的过程、常数或变量的名称相同，则会认为过程引用的是Script 级的名称。显式声明变量可以避免这类冲突，使用 Option Explicit 语句可强制显式声明变量。
语言概念
Sub 过程 
Sub 过程是包含在 Sub 语句和 End Sub 语句中的一系列 Visual Basic 语句。每次调用过程时都执行过程中的语句，从 Sub 语句后的第一个可执行语句开始，到遇到的第一个 End Sub、Exit Sub 或 Return 语句结束。 
Sub 过程执行操作但并不返回值。它能够带参数，如呼叫代码传递给它的常数、变量或表达式。 
声明 Sub 过程的语法如下所示： 
[accessibility] Sub subname[(argumentlist)] 
' Statements of the Sub procedure go here.
HTML标签
在HTML语言中， <sub> 标签可定义下标文本。例如：要求显示：H20的2为下标记;，在html代码中则需要写成：H<sub>2</sub>0。 [1]
包含在 <sub> 标签和其结束标签 </sub> 中的内容将会以当前文本流中字符高度的一半来显示，但是与当前文本流中文字的字体和字号都是一样的。
End Sub
可访问性可以是 Public、Protected、Friend、Protected Friend 或 Private。 
可以在模块、类和结构中定义 Sub 过程。默认情况下它们是 Public，这意味着可以从应用程序中的任意位置调用它们。
参数声明
声明过程的每个参数与声明变量的方法一样，都是指定参数名和数据类型。也可以指定传递机制，以及参数是否可选。 
参数列表中每个参数的语法如下所示： 
[Optional] [ByVal|ByRef] [ParamArray] argumentname As datatype 
如果参数是可选的，则还必须在其声明中提供默认值，如下所示： 
Optional [ByVal|ByRef] argumentname As datatype = defaultvalue
调用语法
可以使用独立的调用语句来显式调用 Sub 过程。不能在表达式中使用其名称来调用它。调用语句必须提供所有非可选参数的值，并且必须用括号将参数列表括起来。如果未提供任何参数，则也可以选择省略括号。Call 关键字的使用也是可选的。 
调用 Sub 过程的语法如下所示： 
[Call] subname[(argumentlist)] 
下面的 Sub 过程通知计算机操作员应用程序将要执行哪个任务，并且还显示一个时间戳。应用程序不是在每个任务的开头重复此代码，而仅是从不同的位置调用 TellOperator。每次调用都会传递 Task 参数中的字符串以标识开始执行的任务。 
Sub TellOperator(ByVal Task As String) 
Dim Stamp As Date ' Stamp is local to TellOperator. 
Stamp = TimeOfDay() ' Get current time for time stamp. 
' Use MessageBox class of System.Windows.Forms namespace. 
MessageBox.Show("Starting " & Task & " at " & CStr(Stamp)) 
End Sub 
典型的 TellOperator 调用如下所示： 
Call TellOperator("file update")
请参见
过程 | 事件处理过程 | Function 过程 | Property 过程 | 过程参数 | Sub 语句 
调节声音菜单
SUB超重低音调整
FRD前后衰减调整 
BAL左右平衡调整 
TOEFL的sub考试
sub考试的全称是GRE-subject考试，国内称为专项考试或者叫做专业GRE，其目的在于考查考生的专业知识综合能力和相关英语能力
目前sub考试有以下8门课程：BiochemistryCell and Molecular Biology（生化）, Literature in English（英语文学）, Biology（生物）, Mathematics（数学）, Chemistry（化学）, Physics（物理）Computer Science（计算机）, Psychology（心理学）
sub-> submarine sandwich 潜水艇三明治
sub 有 副官;部下的意思，而在java中的subclass意为子类。
魔方术语
语法标注解释subtraction的缩写
SUB-X：意思就是少于的意思，在这就是“在X秒以下”之意
比如某高手说sub15秒，就是说，他的平均复原时间在15秒内,或者说,他大多数情况下成绩都在15秒内.
SUB不代表平均,平均使用"AVG"
一般练习时测12次，去掉最高和最低成绩，剩余10次取平均,而平均在15以下就是Sub15
名称缩写
省级优秀毕业生的缩写
省级优秀毕业生（shengjiyouxiubiyesheng）的拼音缩写sub。