内存不足
分配与该计算机有效内存一样多的内存。这可能是一个动态分配数组增长得太大,或者是对象实例数目过多。 要纠正该错误 - 使用Erase语句来重新分配动态数组的储存空间。
- 使用ReDim语句来重新分配储存空间。
- 关闭任何已经打开、不必需的应用程序,文件或者源文件。
语法错误
创建的语句中违反了VBScript的语法规则。 要纠正该错误 需要 '('
当创建过程说明时未包含开括号“(”, Sub foo x // x需要使用圆括号括起来。 End Sub 或使用redim 语句。 Redim x // x需要使用圆括号括起来。 要纠正该错误 需要 ')'
试图封装一套括号中的表达式,但未包含闭括号“)”。必须用一套开括号和闭括号封装一些表达式。 要纠正该错误 需要标识符
使用VBScript 保留词作为变量名称。 要纠正该错误 - 使用其它名称(一个不是VBScript保留词的名称)。
- 以[ ]封装保留词。
需要 '='
使用Set 语句,但未包含=。 要纠正该错误 需要 'If'
创建了一个If...Then...Else 块,但未正常结束块。块语句If 必须为一行的第一个语句,且必须以End If 结束。下面演示了一个If...Then...Else块 的正确结构。 If condition Then [statements] [ElseIf condition-n Then [elseifstatements]] . . . [Else [elsestatements]] End If 要纠正该错误 - 检查块If 语句是否以End 语句。如果是的话,将它改成End If 语句。
需要 'To'
创建一个For...Next 循环,但没有在第一行中包含关键词To。一个For...Next循环 的第一行必须包含关键词To 。下面演示了一个For...Next 循环的正确结构。 For counter = start To end [Step step] [statements] [Exit For] [statements] Next 要纠正该错误 - 确保For...Next循环包含了所有必须的部分。
需要 'End'
创建结构但未正常结束。下表列出了必须以End语句结束的结构。 | 结构 | 结束语句 |
|---|
| Sub | End Sub | | Function | End Function | | If | End If | | Class | End Class | | With | End With | | Select | End Select |
要纠正该错误 - 以End Sub语句结束一个Sub过程。
- 以End Function 结束一个Function过程。
- 以End If 语句结束一个If 语句。
- 以End Class 语句结束一个Class语句。
- 以End With 语句结束一个With语句。
- 以End Select 语句结束一个Select语句。
需要 'Function'
创建一个Function过程,但是以关键词End结束, 而不是以End Function 语句结束。一个Function过程必须包含结束语句End Function 。 要纠正该错误 - 以语句End Function 结束Function过程。
需要 'Sub'
创建了一个Sub 过程,但是使用关键字End结束而不是使用End Sub 语句终止。一个Sub过程必须包含一个End Sub终止语句。 要纠正该错误 需要 'Then'
创建了一个If...Then...Else结束,但在第一行中为包含关键字Then。下面的代码演示了If...Then...Else 结构的正确使用。 If condition Then statements [Else elsestatements ] 或者可以使用块形式语法: If condition Then [statements][ElseIf condition-n Then [elseifstatements]] . . . [Else [elsestatements]]End If 要纠正该错误 - 确保 If...Then...Else结构包含了所有必须的部分。
需要 'Wend'
创建了一个While...Wend 循环,但是没有正确终止循环。一个 While...Wend 循环必须使用语句Wend 来终止。下面演示了一个While...Wend 循环的正确结构。 While condition Version [statements] Wend 要纠正该错误 - 确保While...Wend循环包含了所有必须的部分。
需要 'Loop'
创建了一个Do 循环结构,但未正常中断循环。Do 循环结构与Loop 语句相关联结束。下面演示了Do 循环结构的正确使用。 Do [{While | Until} condition] [statements] [Exit Do] [statements] Loop 或者可以使用下面的语法: Do [statements] [Exit Do] [statements] Loop [{While | Until} condition] 要纠正该错误 需要 'Next'
创建了一个For...Next 循环结构,但未正常结束循环。一个For...Next 循环结构必须以一个Next语句结束。下面演示了一个For...Next 循环结构的正确结构。 For counter = start To end [Step step] [statements] [Exit For] [statements] Next 要纠正该错误 - 确保For...Next循环结构包含了所有必须的部分。
需要 'Case'
创建Select...End Select 构造,但未包含任何Case语句。下面演示了Select...End Select 构造的正确使用方法。 Select Case testexpression [Case expressionlist-n [statements-n]] . . . [Case Else expressionlist-n [elsestatements-n]] End Select 要纠正该错误 - 确保Select...End Select 构造包含所有必须的部分。
需要 'Select'
创建了一个Select...End Select 结构,但未包含结束语句End Select 。下面演示了Select...End Select 结构的正确使用方法。 Select Case testexpression [Case expressionlist-n [statements-n]] . . . [Case Else expressionlist-n [elsestatements-n]] End Select 要纠正该错误 - 确保Select...End Select结构包含了所有必须的部分
需要表达式
创建一个Select...End Select结构,但包含一个Case分句。Case Else语句(失败的情况)必须在它自己那一行出现。下面演示了Select...End Select 结构的正确使用。 Select Case testexpression [Case expressionlist-n [statements-n]] . . . [Case Else expressionlist-n [elsestatements-n]] End Select 要纠正该错误 需要语句
作为参数传递给Execute语句的字符串无法被解析为一个语句。Execute语句不能被用来动态执行VBScript代码。例如,考虑如下的 VBScript代码。 Execute "msgbox 1" '因为msgbox是一个语句,所以有效。 Execute "5*4" '由于5*4无法被解释为一个语句所以失败。 不仅仅是Execute和Eval ,在任何需要一个语句的脚本代码的编译过程中也产生Expected statement错误。例如,如下代码在Internet Explorer 中造成这个错误, <html> <script language=vbscript> 5*4 </script> </html> 注意这里有两个在VBScript中不同且无关的语句, - 编译并执行不工作语句的Execute语句,
- Execute 方法.
要纠正该错误 - 确保传递给Execute 语句的字符串为一个语句。
- 如果要求值的字符串为一个表达式,使用Eval。
需要语句的结束
在语句结尾外出现文字。 要纠正该错误 - 移去额外的文字。
- 如果要注释代码行,在语句的结尾处插入单引号"'"。
需要整数常数
试图在Dim 语句中使用非常数创建一个数组。在VBScript中,Dim 语句中大小值必须为一个常数。例如, Dim a(10) ' 有效。 Dim a(x) ' 无效。 Dim a(1=2) ' 无效 要纠正该错误 需要 'While' 或 'Until'
创建了一个Do循环,但是未包含相关的While 或 Until 关键词。一个Do 循环的测试条件需要在测试条件语句中使用一个While或Until 关键词。下面演示 一个Do 循环的正确结构。 Do [{While | Until} condition] [statements] [Exit Do] [statements] Loop 或者可以使用语法: Do [statements] [Exit Do] [statements] Loop [{While | Until} condition] 要纠正该错误 需要 'While'、'Until' 或语句结束
创建了一个Do循环,但是未包含相关的关键词While 或 Until。一个Do 循环的测试条件需要在测试条件语句中使用一个While或Until 关键词。下面演示了 一个Do 循环的正确结构。 Do [{While | Until} condition] [statements] [Exit Do] [statements] Loop Or, you can use this syntax: Do [statements] [Exit Do] [statements] Loop [{While | Until} condition] 要纠正该错误 - 确保Do循环包含了所有必须的部分。
- 使用关键字While 或 Until来结束Do循环。loop with either the While or Until keywords。
需要 'With'
创建了一个With块,但是以关键词End而不是语句End With 结束。一个 With 块必须使用一个End With 语句结束。下面演示了With块的正确组成。 With object statements End With 要纠正该错误 - 如果使用关键词End 结束一个With块,将它改成End With语句。
- 确保With控制结构了所有必须的部分。
标识符太长
创建了一个包含态多字符的变量或函数名称。限制为255个字符。 要纠正该错误 无效数字
表达式的一个值太大或超出范围。 要纠正该错误 无效字符
在一个表达式中试图使用双字节字符集(DBCS)或其他不被支持的字符。 要纠正该错误 未终止字符串常数
没有用封闭的引号来结束字符串常数。字符串常数必须用一对引号来封闭。 要纠正该错误 无效使用关键词 'Me'
试图使用Set给标识符 Me赋值。Me是一个被保留的标识符,且不能被设定。 要纠正该错误 'loop' 没有 'do'
创建了一个Do 循环,但未正确地建立循环。Do 循环以Do语句开始。下面演示了一个Do 循环的正确结构。 Do [{While | Until} condition] [statements] [Exit Do] [statements] Loop 或者可以使用这个语法: Do [statements] [Exit Do] [statements] Loop [{While | Until} condition] 要纠正该错误 - 在不删除Loop 语句的情况下可能试图删除一个Do 控制结构。
- 确保Do循环包含了所有必须的部分。
无效 'exit' 语句
在以下程序控制结构之一中使用了Exit 语句: - With 语句。
- If...Then...Else语句。
- Select Case语句。
仅在如下结构中可以合法使用Exit 语句来退出: - Do...While 循环(Exit Do)。
- For...Next 循环(Exit For)。
- For Each...Next 循环(Exit For)。
- Function 过程(Exit Function)。
- Sub 过程(Exit Sub)。
要纠正该错误 - 可能不适当地使用了Exit If, Exit With,或Exit Select。
- 不要和If, With,Select 语句一起使用Exit。
无效 'for' 循环控制变量
创建了一个For...Next循环。换句话说,可能在For...Next中使用了一个非法的控制变量。下面的代码演示了一个For...Next 循环的正确结构。 For counter = start To end [Step step] [statements] [Exit For] [statements] Next 要纠正该错误 - 修改For...Next 循环的控制变量,使其在外循环的范围内唯一。
名称重定义
声明了一个在脚本其他地方已经使用的名称。 要纠正该错误 必须为行的第一个语句
代码的多语句行包含了一个If...Then...Else 语句, 但If...Then...Else 语句不是改行的第一个语句。If...Then...Else 语句必须为行的第一个语句。 要纠正该错误 调用 Sub 时不能使用圆括号
未使用Call调用子程序,但是使用了圆括号()。当不使用Call 语句调用子程序时,不要使用圆括号。 要纠正该错误 - 在调用子程序的地方移去圆括号。
- 改用Call 语句调用子程序。
需要文字常数
声明常数,但是赋予其变化的表达式(可以变化的值)。常数不能包含运行时代码。 要纠正该错误 需要 'In'
创建一个For Each...Next 块,但在第一行未包括关键词In 。下面演示了For Each...Next 块的正确结构。 For Each element In group [statements] [Exit For] [statements] Next [element] 要纠正该错误 - 确保For Each...Next 块包含了所有必须的部分。
需要 'Class'
创建一个Class 过程,但是以关键词End结束,而不是使用语句End Class。通常使用End Class语句结束Class 过程。 要纠正该错误 必须在一个类的内部定义
创建了一个 Property 过程(Property Let, Property Set,或 Property Get), 但是在 Class 定义的外部进行了定义。只能在同一类里面创建 Property 过程。 要纠正该错误 - 确保所有的 Property Let,Property Set 和 Property Gets 在一个 Class 定义里面定义了。
在属性声明中需要 Let或 Set 或 Get
创建了一个Property Let, Property Set,或 Property Get 语句,但未包含关键词Let, Set, 或 Get。Property 语句后面必须带Let,Set,或 Get。 要纠正该错误 - 确保Property 语句后面跟Let, Set, 或Get。
需要 'Property'
创建了一个Property 过程(Property Let,Property Set,或Property Get), 但未使用End Property 语句结束过程。Property过程必须以End Property语句结束。 要纠正该错误 - 确保 Property过程以End Property语句结束。
参数数目必须与属性说明一致
所说明的参数数目太少了。当使用Property Let 或 Property Set,参数数目必须比相应的Property Get 返回的数字大1。 要纠正该错误 - 确保Property Let 和 Property Set 至少比由Property Get.返回的参数数目多1。
在类中不能有多个缺省的属性/方法
在类定义中标记了多于一个的缺省属性或方法。在类中只能有一个缺省的属性和方法。 要纠正该错误 类初始化或终止不能带参数
类定义带有Class_Initialize事件或Class_Terminate 事件。这些过程有一个或更多的参数。不要给这些过程指定参数。 要纠正该错误 Property Set 或 Let 至少应该有一个参数
说明了一个没有参数的类的 Set 或 Let 句柄的访问者。 要纠正该错误 不需要 'Next'
创建了一个For...Next 或者For Each...Next 构造,但没有包含For语句。例如,在试图去掉For...Next构造时保留了Next语句。下面演示了For...Next构造的正确用法。 For counter = start To end [Step step] [statements] [Exit For] [statements] Next 要纠正该错误 - 加上For语句 (循环控制语句)。
- 去掉多余的Next语句。
只能在 Property Get 中指定 'Default'
对Property Let 或 Property Set 使用了保留字 Default。只能对 Property Get 指定保留字 Default 。 要纠正该错误 - 只对 Property Get 指定保留字 Default 。
|