Visual Basic 6.0常见错误及解决方案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Visual Basic 6.0常见错误及解决方案
以下“解决方案”中的内容对应的是“错误分析”中内容的解决方法。
1. 无效的过程调用或参数(错误 5)
?? 错误原因
有些调用操作不能完成。
?? 错误分析
⑴ 参数值可能超出了允许的范围。例如,Sin 函数只接受特定范围的值。正的参数小于2,147,483,648的是可接受的,而等于 2,147,483,648 则会产生错误。
⑵ 如果所要调用的过程不适于当前平台的话,也会发生此错误。例如,有些程序可能只应用到 Microsoft Windows 或 Macintosh 等。
?? 解决方案
⑴ 检查参数的许可范围。
⑵ 检查过程的特定平台信息。
2. 溢出(错误 6)
?? 错误原因
当赋值超出目标的限制时,就会发生溢出。
?? 错误分析
⑴ 赋值、计算或数据类型的结果的转换太大,以致于不能在变量类型所允许的范围内表示出来。
⑵ 给属性的赋值超过属性能接受的最大值。
⑶ 试图在计算中使用一个数字,并且该数字被强制为一个整数,但是结果超过了整数的范围,例如:
Dim x As Long
x = 2000 * 365 ' 错误: 溢出
Visual Basic
2
?? 解决方案
⑴ 赋值给足够表示值的范围的类型的变量上。
⑵ 确保赋值适合属性的范围。
⑶ 要解决这个问题,请按如下方式键入该数字:
Dim x As Long
x = CLng(2000) * 365
3. 内存溢出(错误 7)
?? 错误原因
需要更多的内存空间,或是遇到 64K 段边界限制。
?? 错误分析
⑴ 打开了太多的、文档或资源文件。
⑵ 模块或过程太大了。
⑶ 在 Microsoft Windows 标准模式下执行。
⑷ 在 Microsoft Windows 增强方式下执行,但超出了虚拟内存的空间。
⑸ 一些驻留程序在运行。
⑹ 设备驱动程序装载的太多。
⑺ Public 变量超出了空间。
?? 解决方案
⑴ 关闭不需要的应用程序、文档或资源文件。
⑵ 将庞大的模块或过程分成几个。虽然这样不能节省内存空间,但可避免 64K 段边界限制。
⑶ 按增强方式重新启动 Microsoft Windows 。
⑷ 空出一些磁盘空间以增加虚拟内存,或至少确保有空馀的空间。
⑸ 减少一些驻留程序。
⑹ 减少一些不需要的设备驱动程序。
⑺ 减少 Public 变量的数量。
4. 下标越界(错误 9)
?? 错误原因
只能在定义的范围内访问数组元素和集合成员。
Visua l Basic 6.0常见错误及解决方案 王牌8
3
?? 错误分析
⑴ 引用了不存在的数组元素。
⑵ 声明数组时没有指定元素的数目。例如,下列的代码就会导致此错误:
Dim MyArray() As Integer
MyArray(8) = 234 ' 导致错误 9。
⑶ 引用了不存在的集合成员。
⑷ 使用速写形式的下标,结果指定了错误的元素。
?? 解决方案
⑴ 下标比可能下标范围大或小,或是在应用程序中这一边的数组没有指
定范围。检查数组的声明以确认其上界和下界。若使用的是重新指定范围的数组,应使用 UBound 和 LBound 函数来决定数组访问。如果索引指定为变量,应检查变量名的拼写。
⑵ Visual Basic 并不会将没有指定范围的数组自动设为 0 – 10。相反必须使用 Dim 或ReDim 来指定数组中元素的数目。
⑶ 试着使用 For Each...Next 结构代替指定元素下标。
⑷ 例如,当在集合上使用 ! 运算子时,! 自动指定了一个键。例如 object!keyname.value 和 object.item(keyname).value 是一样的。在此例中,集合中如果 keyname 表示一个错误键,错误就会产生。若要改进此错误,在集合对象中使用正确的键名称或索引。
5. 数组长度固定或临时被锁定(错误 10)
?? 错误原因
并非所有数组都可重设大小。即使数组声明成动态,或者数组是在 Variant 变量中,也会被临时锁定。
?? 错误分析
⑴ 使用 ReDim 来改变固定大小数组的元素数。例如,在下列的代码中,在 NextOne 过程中 SomeArr 接收了固定大小的数组 FixedArr ,然后试图调整 SomeArr 的大小:
Sub FirstOne
Dim FixedArr(25) As Integer ' 创建一个固定大小的数组并
NextOne FixedArr() ' 将之传给其它过程。
End Sub
Sub NextOne(SomeArr() As Integer)
ReDim SomeArr(35) ' 发生错误 10。
Visual Basic
4
. . .
End Sub
⑵ 对模块层次动态数组,要重新确定大小,而某一个元素已经作为参数传给了过程。例如,在下列的代码中,ModArray 是模块层次动态数组,却将其第 56 个元素以按引用传给 Test过程:
Dim ModArray () As Integer ' 创建一个模块层次动态数组。
. . .
Sub AliasError()
ReDim ModArray (1 To 73) As Integer
Test ModArray (45) ' 传模块层次动态数组的元素
' 给 Test 过程。
End Sub
Sub Test(SomeInt As Integer)
ReDim ModArray (1 To 40) As Integer ' 错误在这里发生。
End Sub
⑶ 赋一个值给包含数组的 Variant 变量,但 Variant 当前被锁定。例如,如果代码使用了 For Each...Next 循环,对包含数组的 variant 执行操作的话,在进入循环后数组将会被锁定,在循环退出后释放:
SomeArray = Array(9,8,7,6,5,4,3,2,1)
For Each X In SomeArray
SomeArray = 301 ' 因为数组锁定导致错误。
Next X
?? 解决方案
⑴ 将数组用 ReDim(如果是在过程内声明数组)声明为动态的而非固定大小,或在声明时不指定元素数(如果是在模块级别中声明数组 )。
⑵ 此例并不需要传递模块层次动态数组元素,因为在模块中所有过程都可看到它。然而,如果传递元素,在过程内引用参数,数组会被锁定以避免内存的配置释放,因此,当过程返回时,会导致不能预测的情况出现。
⑶ 使用 For...Next 代替 For Each...Next 循环来执行迭代。当数组是 For Each...Next 循环的对象时,可
以读入数组,但不能写入。
Visua l Basic 6.0常见错误及解决方案 王牌8
5
6. 除数为零(错误 11)
?? 错误原因
除数为零是不允许的。
?? 错误分析
表达式的值作除数使用,但其为零。
?? 解决方案
检查在表达式中变量的拼写。拼写错误的变量名会被当成数值变量并且初始值为零。检查表达式中变量的前一个操作,尤其是从其他过程传送给过程的参数。
7. 串空间溢出(错误 14)
?? 错误原因
Visual Basic 允许使用非常大的字符串。然而,其他程序的需求和处理字符串的方法可能导致这种错误。
?? 错误分析
⑴ 使用的表达式为计算所创建的临时字符串,可能产生此错误。例如,下列的代码在一些操作系统上将产生 Out of string space 的错误:
MyString = "Hello"
For Count = 1 To 100
MyString = MyString & MyString
Next Count
⑵ 系统内存溢出,致使不能给字符串分配空间。
?? 解决方案
⑴ 将字符串赋值给其他名称的变量。
⑵ 删除不需要的应用程序以增加可用的内存空间。
8. 不能执行所需的操作(错误 17)
?? 错误原因
如果此操作会导致工程的当前状态无效,则操作将不能执行。
Visual Basic
6
?? 错误分析
⑴ 所要求的操作不能作用在工程当前的状态。例如,当程序正处于中断模式时,使用“引用”对话框来添加一个对工程或对象库的新引用时,就会发生此错误。
⑵ 试图修改正在执行的代码。例如,试图从文件读出代码然后加到正在执行的模块中。
?? 解决方案
⑴ 停止执行当前的代码,然后重试此操作。
⑵ 虽然可以修改工程中当前并非真正执行的模块,但不能修改正在运行的模块。如要要做这样的修改,必须停止当前正在运行的模块,再添加或修改,然后重新执行。
9. 出现用户中断(错误18)
?? 错误原因
进程的中断执行是很有用的,如果不进行处理则会使应用程序中止。
?? 错误分析
用户按 CTRL+BREAK 或其他中断键。
?? 解决方案
在开发环境中可继续执行。避免在运行时出现这种情况,应使用合适的方法处理此错误。
10. 未发生错误而出现Resume(错误 20)
?? 错误原因
Resume 语句只能在错误处理程序内出现,而且只能在活动的错误处理程序中执行。
?? 错误分析
⑴ 将 Resume 语句放在错误处理程序的代码之外。
⑵ 代码即使没有错误也跳到了错误处理程序之中。
?? 解决方案
⑴ 将此语句移到错误处理程序之内,或删除它。
⑵ 也许拼错了行标签。不能经过过程跳到标签,所以搜寻过程中注明错误处理程序的标签。如果找到了重复的 GoTo 语句的目标标签,而不是属于 On Error GoTo 语句的目标标签的话,修改行标签使与所要的目标标签一致。
Visua l Ba
sic 6.0常见错误及解决方案 王牌8
7
11. 堆栈空间溢出(错误 28)
?? 错误原因
堆栈是内存的一个工作区,会随着程序运行的需要而增长或缩小
?? 错误分析
⑴ 有太多活动的 Function、Sub 或 Property 过程调用。
⑵ 本地变量需要更多可用的本地变量空间。
⑶ 有太多定长字符串。
⑷ DoEvents 函数调用的嵌套太多。
⑸ 代码引起了事件层叠。
?? 解决方案
⑴ 检查过程的嵌套是否太深,尤其是递归过程,即自己调用自己的过程。确保递归能终止,使用 “调用” 对话框来查看活动的过程 (在堆栈上)。
⑵ 试着在模块级别中声明某些变量。可以在静态过程,即在 Property、Sub 或 Function 关键字前加上 Static,声明所有变量,或可以在过程内使用 Static 语句来声明各个Static 变量。
⑶ 定长字符串在过程中可快速访问,比可变长度字符串使用更多堆栈空间,因为字符串数据本身要放在堆栈上。可试着重新定义一些定长字符串成为变长字符串。当声明一变长字符串时,只有字符串描述符 (非数据本身) 会放在堆栈上。可以在没有堆栈空间的模块层次上定义字符串。在模块层次申明变量是缺省为 Public,所以在模块上所有过程皆可见到字符串。
⑷ 利用“调用”对话框,在堆栈上查看正在活动的过程。
⑸ 所谓事件层叠就是引起一个事件,此事件会调用已在堆栈上的事件过程。事件层叠和不能中止的递归过程调用是相似的,但不太明显,因为是由 Visual Basic 所调用,而不是在代码中调用。使用“调用” 对话框来查看那些正在活动的过程 (在堆栈上)。
12. DLL 应用程序客户太多(错误 47)
?? 错误原因
Visual Basic 中动态链接库 (DLL)一次只能容纳 50 个主机应用程序访问。
?? 错误分析
应用程序和其他 Visual Basic 主应用程序(一些可能是应用程序访问的)都同时访问Visual Basic DLL。
Visual Basic
8
?? 解决方案
减少访问 Visual Basic 的打开的应用程序数。
13. 加载 DLL 时的错误(错误 48)
?? 错误原因
动态链接库 (DLL) 就是在 Declare 语句的 Lib 子句中所指定的库。
?? 错误分析
⑴ 此文件并非可执行的 DLL。
⑵ 此文件并非 Microsoft Windows DLL。
⑶ 此文件是早期的 Microsoft Windows DLL,而且和 Microsoft Windows 保护方式不兼容。
⑷ 此 DLL 引用到其他不存在的 DLL。
⑸ 此 DLL 或所引用的 DLL 并不在所指定的目录中。
?? 解决方案
⑴ 如果此文件是正文源文件,它必须编译并链接成可执行的 DLL 形式。
⑵ 取得此文件相应的 Microsoft Windows DLL 版。
⑶ 取得更新的版本。
⑷ 取得此被引用的 DLL 并让它能提供其他 DLL 使用。
⑸ 移动 DLL 到所引用的目录或将 DLL 所在的目录添加到路径中。
14.
内部错误(错误 51)
?? 错误原因
确保此错误不是由 Error 语句或 Raise 方法所产生。
?? 错误分析
在 Visual Basic 中发生了内部出错。
?? 解决方案
除非此调用不是由 Error 语句或 Raise 方法所产生,不然请与 Microsoft 产品支持服务联系,告知所发生的情况。
Visua l Basic 6.0常见错误及解决方案 王牌8
9
15. 错误的文件名或号(错误 52)
?? 错误原因
此错误发生在访问某指定文件时。
?? 错误分析
⑴ 语句引用到如下的文件号或文件名:
① Open 语句中没有指定或虽有指定但已经关闭。
② 超出文件号范围(1 – 511)。
⑵ 无效的文件名或文件号。
?? 解决方案
⑴ 解决方案:
① 用 Open 语句中指定此文件名。注意,如果调用 Close 语句时没有参数,就会不小心关闭当前所有打开的文件,使所有的文件号无效。
② 如果代码中会产生文件号的话,请确保产生的文件号应正确。
⑵ 文件名必须遵循操作系统约定。在 Microsoft Windows 中,可使用以下的约定:
① 文件或目录名称可以有两部分:文件名和任选性的扩展名。两部分以圆点隔开,例如,myfile.new。
② 文件名可达 255 字符。
③ 文件名必须以字母或数字开头。它可以包含大小写字符(文件名不分大小写),但以下的字符除外:双引号(")、撇号(') 、斜杠(/)、反斜杠(\)、冒号(:)、垂直条(|)。
④ 文件名可以包含空格。
⑤ 以下的名称将保留,且不能用在文件或目录上:CON、AUX、COM1、COM2、COM3、COM4、LPT1、LPT2、LPT3、PRN、NUL。例如,如果要在 Open 语句中将文件名设为 PRN 的话,那么 Print # 和 Write # 语句中的缺省打印机,将会指向 Open 语句中的文件号。
⑥ 以下是正确的 Microsoft Windows 文件名;
LETTER.DOC
My Memo.Txt
BUDGET.92
12345678.901
Second Try.Rpt
Visual Basic
10
16. 找不到指定的文件(错误 53)
?? 错误原因
所指定的文件找不到。
?? 错误分析
⑴ 如 Kill、Open 或 Name 等语句,引用到一个不存在的文件。
⑵ 试图调用动态链接库 (DLL)中的过程,但找不到在 Declare 语句的 Lib 子句中所指定的库文件名。
⑶ 在开发环境中,如果试图打开并不存在的工程或装载不存在的文本文件,将发生错误。
?? 解决方案
⑴ 检查文件名的拼写以及指定的路径。
⑵ 检查文件名的拼写以及指定的路径。
⑶ 检查文件名或工程名的拼写以及指定的路径。
17. 文件模式错误(错误 54)
?? 错误原因
处理文件内容中的语句,必须与打开文件时的模式一致。
?? 错误分析
⑴ 将 Put 或 Get 语句指定给了顺序文件。
⑵ 将 Print # 语句使用在非 Output 或 Append 访问方式所打开的文件上。
⑶ 将 Input # 语句使用在非 Input 访问模式所打开的文件上。
⑷
试图对一个只读文件进行写。
?? 解决方案
⑴ Put 和 Get 只能在以 Random 或 Binary 访问方式打开的文件上使用。
⑵ 用另外的语句把数据放到文件中或以合适的模式重新打开文件。
⑶ 用另外的语句把数据放到文件中或以 Input模式重新打开文件。
⑷ 修改文件的读/写状态或放弃写入。
Visua l Basic 6.0常见错误及解决方案 王牌8
11
18. 文件已打开(错误 55)
?? 错误原因
有时候文件必须在其他 Open 或其他操作发生前先关闭。
?? 错误分析
⑴ 对一个已经打开的文件,执行顺序输出模式的 Open 语句。
⑵ 如 Kill、SetAttr 或 Name 等语句,引用到一个打开的文件。
?? 解决方案
⑴ 必须将要打开成其他方式的顺序访问方式文件先关闭。例如,必须先将打开成 Input 的文件先关闭再打开成 Output。
⑵ 在执行此语句前先关闭此文件。
19. 记录长度错误(错误 59)
?? 错误原因
Get 或 Put 语句的记录变量的长度必须和 Open 语句所指定的相同。
?? 错误分析
⑴ 记录变量长度和其 Open 语句所指定的不同。
⑵ Put 语句中的变量是(或包括)一个变量长度字符串。
⑶ Put 语句中的变量为(或包括) Variant。
?? 解决方案
⑴ 请确保在定义了记录变量类型的用户定义类型中,固定长度变量应与 Open 语句的Len 子句所描述的值相同。例如,假设 RecVar 是一个适当类型的变量。可以使用Len 函数来指定长度,如下:
Open MyFile As #1 Len = Len(RecVar)
⑵ 在用 Put 语句随机访问文件时,因为 2 字节长的描述符总要添加到变量长度字符串上,所以变量长度字符串必须比 Open 语句的 Len 子句所指定的记录长度至少小2 个字符。
⑶ 和变量长度字符串一样,Variant 数据类型也需要 2 个字节的描述符。包含变量长度字符串的Variants,需要 4 个字节的描述符。因此,对于 Variant中的变量长度字符串,其字符串长度必须比 Len 子句所指示的记录长度至少小 4 个字符。
Visual Basic
12
20. 磁盘已满(错误 61)
?? 错误分析
⑴ 磁盘没有足够的空间完成 Print #、Write # 或 Close 操作。
⑵ 磁盘没有足够的空间来创建所需文件。
?? 解决方案
⑴ 将一些文件移到其他磁盘或删除掉一些文件。
⑵ 将一些文件移到其他磁盘或删除掉一些文件。
21. 输入超出文件尾(错误 62)
?? 错误原因
不能对文件尾位置后进行读入。
?? 错误分析
⑴ Input # 或 Line Input # 语句要到已读完文件或空文件中读入数据。
⑵ 在以 Binary 访问所打开的文件上使用 EOF 函数。
?? 解决方案
⑴ 在 Input # 语句之前直接使用 EOF 函数来测试是否处在文件的结尾。
⑵ EOF 只能用在顺序 Input 访问所打开的文件上。在 Binary 访问所打开的文件上使用 Seek 和 Loc
。
22. 记录号错误(错误 63)
?? 错误原因
此错误发生在访问文件时。
?? 错误分析
Put 或 Get 语句中的记录号小于或等于零。
?? 解决方案
检查产生记录号的计算应正确。确保含有记录号的或在计算记录号时使用的变量,其拼写应正确。除非在模块中加上 Option Explicit,不然变量名拼错了,会被视为隐含声明,且将其初始值设置为零。
Visua l Basic 6.0常见错误及解决方案 王牌8
13
23. 权限被否定(错误 70)
?? 错误原因
试图对写保护的磁盘进行写操作,或要访问加锁文件。
?? 错误分析
⑴ 为顺序 Output 或 Append 写,打开一个写保护文件。
⑵ 用顺序 Output 或 Append 方式,打开有写保护的磁盘上的文件。
⑶ 写入已被其他进程锁定的文件。
⑷ 试图访问注册表,但用户权限不包括此类注册表访问。
?? 解决方案
⑴ 用 Input 方式打开文件,或者修改文件的写保护属性。
⑵ 从磁盘上删除写保护,或者使用 Input 方式文件。
⑶ 等其他进程释放后再打开此文件。
⑷ 在 32 位 Microsoft Windows 系统上,用户必须有访问当前系统注册表的权限。改变用户权限,或由系统管理员来修改。
24. 不能用不同的驱动器重新命名(错误 74)
?? 错误原因
Name 语句必须在当前的驱动器上重新命名文件。
?? 错误分析
用 Name 语句要将一个文件转移到不同的驱动器上。
?? 解决方案
使用 FileCopy 将文件写到另一个驱动器上,然后用 Kill 语句删除旧的文件。
25. 路径/文件访问错误(错误 75)
?? 错误原因
在文件访问或磁盘访问操作期间,例如,Open、MkDir、ChDir 或 RmDir,操作系统不能连接路径和文件名连接。
?? 错误分析
⑴ 文件指定的格式不正确。
Visual Basic
14
⑵ 试图保存到只读文件上。
⑶ 在顺序 Output 或 Append 模式下试图打开只读文件。
?? 解决方案
⑴ 文件名可以包含完整限定的(绝对)或相对的路径。完整限定的路径以驱动器名称(如果路径在另一台驱动器上)为开始,并且列出从根目录到文件的路径。任何非完整限定的路径都是相对于当前驱动器和目录的。
⑵ 修改目标文件的只读属性或以其他文件名保存。
⑶ 以 Input 方式打开文件,或是要修改文件的只读属性。
26. 路径未找到(错误 76)
?? 错误原因
此文件路径包括指定的驱动器加上目录以及子目录,必须能遍历到文件的位置。路径可以是相对的或绝对的。
?? 错误分析
在文件访问或磁盘访问期间,例如,Open、MkDir、ChDir 或 RmDir,此时操作系统不能找到指定的路径。
?? 解决方案
重新指定路径。
27. 无效的样式串(错误 93)
?? 错误原因
在 Like的查找操作中指定的样式串无效。
?? 错误分析
对于
非法字符列表的表达式,一个普通的例子就是 [a-b,其右边方括号丢失了。
?? 解决方案
检查列表的表达式字符,是否正确。
Visua l Basic 6.0常见错误及解决方案 王牌8
15
28. 文件格式非法(错误 321)
?? 错误原因
磁盘文件一般以特定的格式来存放数据。
?? 错误分析
⑴ 装载一个文件到部件中,但文件中数据的格式与部件不兼容。
⑵ 将部件数据保存到文件中,但部件数据的格式与文件的格式不兼容。
?? 解决方案
⑴ 查阅部件的文档以决定磁盘文件数据应适合的格式,而且部件应提供格式转换的支持。
⑵ 查阅部件的文档以决定部件应提供格式转换的支持。
29. 不能创建需要的临时文件(错误 322)
?? 错误原因
创建可执行文件,需要建立一个临时性文件。
?? 错误分析
⑴ 包含 TEMP 环境变量所指定目录的驱动器已满。
⑵ TEMP 环境变量所指定的驱动器或目录无效或为只读。
?? 解决方案
⑴ 从已满的驱动器中删除文件或在 TEMP 环境变量中指定其他的驱动器。
⑵ 在 TEMP 环境变量中指定一个正确的驱动器,或从指定的驱动器或目录中删除只读的设置。
30. 属性未找到(错误 422)
?? 错误原因
并非所有对象都支持同样的属性。
?? 错误分析
此对象不支持指定的属性。
Visual Basic
16
?? 解决方案
检查属性名的拼写,也有可能访问 "text" 之类的属性,而此对象所支持的是 "caption" 或类似的指定属性。应检查对象的文档。
31. 在自动化操作时文件名和类名找不到(错误 432)
?? 错误原因
GetObject 函数需要一个正确的文件名及路径,或系统登记的类名称。
?? 错误分析
调用 GetObject 函数时所指定的文件名或类找不到。
?? 解决方案
检查名称然后重试一次。确保 类 参数的名称和系统所登记的匹配。
32. 对象不支持命名的参数(错误 446)
?? 错误原因
并非所有对象都支持命名参数。
?? 错误分析
访问的对象其方法不支持指定的参数。
?? 解决方案
当执行此对象的方法时,请指定参数到相应位置。参看部件的文档以获得更多参数位置及类型的信息。
33. 未找到命名的参数(错误 448)
?? 错误原因
除非命名参数在过程定义中出现,不然可能在过程执行时不能使用。
?? 错误分析
指定一个命名的参数,但过程中没有定义此参数的名称。
Visua l Basic 6.0常见错误及解决方案 王牌8
17
?? 解决方案
检查参数名称的拼写。
34. 参数数错误或无效的属性赋值(错误 450)
?? 错误原因
传给过程的参数数必须和过程定义的参数数匹配。
?? 错误分析
⑴ 在调用过程时,所给的参数数和过程所要求的不一样。
⑵ 为控件指定的索引不在控件数组中。
⑶ 要给
只读属性进行赋值,或要赋值给不存在 Property Let 过程的属性。
?? 解决方案
⑴ 与程序声明或定义进行比较,检查调用中的参数列表。
⑵ 指定的索引作为一个参数解释,但既不是所要的索引也不是所要的参数,所以发生错误。可删除索引,或在过程后新创建控件数组。在控件的属性外壳或设计时的属性窗口中,将 Index 属性设为非零值。
⑶ 给属性赋值与将值当作参数传送给对象的 Property Let 过程是一样的。正确地对Property Let 过程进行定义;它必须具有比对应的 Property Get 过程参数多出一个以上的参数。如果属性是只读的,就不能给它赋值。
35. 变量使用了Visual Basic不支持的类型(错误458)
?? 错误原因
并非每个程序语言都能使用出现在类型库或对象库中的每个变量。
?? 错误分析
使用定义在类型库或对象库的变量,但 Visual Basic 不支持其数据类型。
?? 解决方案
在 Visual Basic 程序中不能使用 Visual Basic 不能识别的变量。
Visual Basic
18
36. 替换内容太长(错误 746)
?? 错误原因
替换内容不能超出指定的最大长度。
?? 错误分析
替换内容的长度超过允许的长度
?? 解决方案
查阅部件的文档以得到最大长度。
37. 数据格式错误(错误290)
?? 错误原因
DDE 对话中的应用程序提供了非期望格式的数据,使它不能正确地执行 DDE。
?? 错误分析
⑴ 应用程序提供了数据,但其数据格式不能被 Visual Basic 识别。
⑵ 应用程序向 PictureBox 提供了文本数据,或者向 TextBox.提供了图片数据。
?? 解决方案
⑴ 试着以不同的主题初始化对话。
⑵ 试着以不同的控件初始化对话。
38. 不能加载系统 DLL 'dll'(错误 298)
?? 错误原因
不能找到操作系统提供的 .DLL 文件,例如:Ddeml.dll、Version.dll 或者 Winspool.drv。
?? 错误分析
⑴ 文件没有在正确的路径上。
⑵ DLL 被破坏或删除。
⑶ 没有足够的内存或交换空间。
?? 解决方案
⑴ 保证 DLL 在 Windows System 路径。
⑵ 重新装入 DLL。
Visua l Basic 6.0常见错误及解决方案 王牌8
19
⑶ 试着关闭其它应用程序而释放一些内存。
39. 文件格式无效(错误 321)
?? 错误原因
Visual Basic 窗体文件被破坏。
?? 错误分析
⑴ 窗体有一个被破坏的 ActiveX 控件。
⑵ ActiveX 控件当前版本中的属性数目与所期望的不符。
?? 解决方案
⑴ 试着替换窗体上的 ActiveX 控件。
⑵ 试着以更早或更新的版本代替 ActiveX 控件。
40. 不能访问系统注册表(错误 335)
?? 错误原因
读写系统注册表失败。
41. 控件数组索引无效(错误 341)
?? 错误原因
使用无效的索引值引用控件数组中的一个元素。
?? 错误分析
代码中引用的索引值为负数。
?? 解决方案
改变索引值,让它引用到控件数组中已存在元素中的某一个。
42. 必须指定对象数组的索引(错误 344)
?? 错误原因
控件不是控件数组的一部分,但它被当作其中的部分而引用了。
Visual Basic
20
?? 错误分析
⑴ 试图用索引值引用的控件不是数组的一部分。
⑵ 在设计时,创建所引用的控件,使其成为一个控件数组。
?? 解决方案
⑴ 删除索引值的引用。
⑵ 试图在运行时用 Load 语句增加一个控件,却不存在具有该 Name 属性的控件数组。
43. 不能加载或卸载该对象(错误 361)
?? 错误原因
Load 或 Unload 语句引用了无效的对象或控件。
?? 错误分析
⑴ 试图加载或卸载不是控件或窗体的对象,如 Screen、Printer 或 Clipboard.
⑵ 试图加载或卸载一个现存的控件,但它不是控件数组的一部分。例如,假设 Name 属性为 Text1 的 TextBox 存在,则 Load Text1 会产生该错误。
⑶ 试图在父菜单的 Click 事件中卸载 Menu 控件。
⑷ 试图卸载 Menu 控件的最后一个可视菜单项。
?? 解决方案
⑴ 删除代码中的错误语句。
⑵ 在代码中删除错误的语句,或改变控件数组中的控件引用。
⑶ 在其它过程中卸载 Menu 控件。
⑷ 在试图卸载菜单项之前,先检查控件数组中其它菜单项的 Visible 属性的设置,或删除代码中的错误语句。
44. 不能在该上下文中卸载(错误 365)
?? 错误原因
某些情况下,不允许卸载窗体或窗体中的控件。
?? 错误分析
⑴ 在窗体的 Paint 事件中,或在窗体上控件的 Paint 事件中,有一个 Unload 语句,此时的控件应具有 Paint 事件。
⑵ 在 ComboBox.的 Change、Click 或 DropDown 事件中有一个 Unload 语句。
Visua l Basic 6.0常见错误及解决方案 王牌8
21
⑶ 在 HScrollBar 或 VScrollBar 控件的 Scroll 事件中有一个 Unload 语句。
⑷ 在 Data、Form、MDIForm 或 PictureBox 控件的 Resize 事件中有一个 Unload 语句。
⑸ 在试图卸载 MDI 子窗体的 MDIForm 的 Resize 事件中,有一个 Unload 语句。
⑹ 在 Data 控件的 RePosition 或 Validate 事件中有一个 Unload 语句。
⑺ 在 OLE Container 控件的 ObjectMove 事件中有一个 Unload 语句。
?? 解决方案
⑴ 从 Paint 事件中删除 Unload 语句。
⑵ 从事件中删除 Unload 语句。
⑶ 从事件中删除 Unload 语句。
⑷ 从事件中删除 Unload 语句。
⑸ 从事件中删除 Unload 语句。
⑹ 从事件中删除 Unload 语句。
⑺ 从事件中删除 Unload 语句。
45. 属性值无效(错误 380)
?? 错误原因
给属性赋予了一个不适当的值。
?? 错误分析
试图为对象或控件的属性设置允许范围之外的值。
?? 解决方案
把属性的值改为有效的设置值。例如,MousePointer 属性必须被设为一个从 0 到 15 或 99 的整数。
46. 窗
体最大化或最小化时不能被移动或调整尺寸(错误 384)
?? 错误原因
在最大化或最小化的窗体上 Left、Top、Height 和 Width 属性不能被改变。
?? 错误分析
⑴ 当窗体最大化或最小化时,试图采用 Move 方法或者改变窗体的 Left、Top、Height 或 Width。
⑵ 当窗体最大化或最小化,并且其中的代码试图改变窗体的 Left、Top、Height 或
Visual Basic
22
Width 时,Resize 事件发生。
?? 解决方案
⑴ 使用 Move 方法之前先检查窗体的 WindowState 属性,或者禁止用户最大化或最小化窗体。
⑵ 重写 Resize 事件过程的代码,以检查窗体的 WindowState 属性,如果 WindowState 是 1 - 最小化或 2 - 最大化,则退出过程。
47. 不能锁定数据库(错误 541)
?? 错误原因
数据库文件不能被锁定。
?? 错误分析
⑴ 当打开表时试图锁定它,但由于该表正被使用,所以不能被锁定。
⑵ 试图锁定已经被别人锁定的记录。
?? 解决方案
⑴ 等候一会,再重试此操作。
⑵ 等别的用户完成对记录的操作后,再重试此操作。
48. 无法激活对象(错误 31027)
?? 错误原因
无法加载对象的源文档,或无法访问创建此对象的应用程序。
?? 错误分析
试图激活一个链接对象(设置 Action = 7)且 SourceDoc 属性所指定的文件已删除或不再存在时,则引起此错误。
?? 解决方案
激活一个对象(设置 Action = 7)且 Verb 属性指定的动作无效时,也会引起此错误。提供对象的某些应用程序根据应用的状态可能支持不同的动词。应用程序支持的所有动词都列在 ObjectVerbs 属性列表中。然而,对于应用程序的当前状态,有些动词可能无效。
Visua l Basic 6.0常见错误及解决方案 王牌8
23
49. 文件保存错误(错误 31036)
?? 错误原因
Visual Basic 无法将对象写入指定文件(设置 Action = 11,或 18)。
?? 错误分析
⑴ FileNumber 属性值无效。
⑵ 文件不是以 Binary 方式打开的。
⑶ 磁盘空间不够。
50. 文件加载错误(错误 31037)
?? 错误原因
当试图读取指定文件(设置 set Action = 12)时发生的错误。
?? 错误分析
⑴ FileNumber 属性值无效。
⑵ 文件不是以 Binary 方式打开的。
⑶ 文件保存不正确(设置 Action = 11)。
⑷ 文件已毁损。
⑸ 文件位置没有定位于一个有效 OLE 对象的开头。