vb中的常见错误与分析汇总
VBA编程中的常见错误与调试技巧

VBA编程中的常见错误与调试技巧VBA(Visual Basic for Applications)是一种常用于微软Office应用程序(如Excel、Word等)宏功能的编程语言。
在编写VBA宏时,经常会遇到一些错误,不仅会导致程序无法正确执行,还会耗费大量时间来寻找问题所在。
本文旨在帮助读者了解VBA编程中的常见错误,并提供一些调试技巧,以便更高效地解决问题。
一、常见错误类型在VBA编程过程中,常见的错误类型包括语法错误、运行时错误和逻辑错误。
1. 语法错误语法错误是指违反了VBA编程语言的规则而导致的错误。
例如,拼写错误、缺少引号、括号不匹配等。
当出现语法错误时,通常会在代码编辑器中的错误列表中显示相应的错误提示。
我们需要逐个修复这些错误,确保代码完全符合语法规则。
2. 运行时错误运行时错误是指代码在执行过程中出现的错误。
这些错误可能是由于无效的操作、不匹配的数据类型、越界访问等引起的。
运行时错误会导致程序中断,我们需要定位并修复这些错误以确保程序正常运行。
3. 逻辑错误逻辑错误是指程序的逻辑错误而不是语法或运行时错误。
这种错误通常是开发者的代码逻辑错误导致的,导致程序不能按预期工作。
调试逻辑错误需要我们仔细检查代码、使用调试工具定位问题,并进行逻辑上的调整。
二、常见错误的原因及解决方法1. 语法错误语法错误通常是由于书写或拼写错误引起的。
例如,缺少关键字、错误的标点符号、不匹配的引号等。
解决方法:- 仔细检查代码,确保所有关键字、符号和标点符号都正确使用。
- 使用代码编辑器的自动完成功能,可以帮助我们避免一些拼写错误。
- 对于缺少引号或括号不匹配的情况,可以使用代码编辑器的配对括号或引号功能来修正。
2. 运行时错误运行时错误通常是由于无效的操作、数据类型转换错误、越界访问等引起的。
解决方法:- 分析错误消息,定位报错的代码行。
通常报错消息会给出一些提示,帮助我们理解问题所在。
- 使用断点调试功能,使用断点将程序暂停在错误的代码行上,并逐步执行代码。
VB各种出错信息汇总

Private Sub Command1_Click(r
Dim i As Integer
a(0) = 1
For i = 1 To 5
a(i) = 2 * a(i - 1) + 1
Next i
Text1.Text = Str(a(6))
End Sub
数组a的下标范围是0~5,a(6)中的下标没有定义
Dim x As Single
Dim y As Single
x = 5.3
y = int(x)
Label1.text = Str(y)
End Sub
标签对象label1的属性中没有text属性,要在label1中显示文字,那么应该输入的属性名是caption
4
Private Sub Command1_Click()
Dim a As Integer
Dim x As Double
a = -4
x = Sqr(a)
Label1.Caption = Str(x)
End Sub
Sqr(x)函数中的x必须是正数
5
Private Sub Command1_Click()
Dim n As Integer, s As Integer
Dim r As Single
Dim pi As Double
r = 100
pi = 3.14
Label1.Caption = "圆面积为:" + Val(pi * r * r)
End Sub
Val(x)函数的返回值的数据类型是数值,而caption属性的值是字符串类型,“=”的左右两边数据类型不匹配
各种出错信息汇总
序号
解读VBA中的常见报错信息与解决方法

解读VBA中的常见报错信息与解决方法VBA是Visual Basic for Applications的简称,它是一种用于Microsoft Office应用程序(如Excel、Word和PowerPoint)的宏编程语言。
VBA的使用可以帮助用户自动化常见任务,增强应用程序的功能。
然而,在编写和运行VBA代码时,你可能会遇到各种错误信息。
了解这些常见报错信息以及相应的解决方法,可以帮助你更好地调试和优化你的VBA代码。
1. “语法错误”当你在VBA代码中遇到“语法错误”时,意味着代码中存在语法错误,VBA无法理解你的指令。
这种错误通常由拼写错误、缺少或多余的括号、引号不匹配等问题引起。
解决方法:- 仔细检查代码,确保所有的括号、引号都正确匹配。
- 检查变量和函数的拼写是否正确。
- 使用VBA的语法检查工具来查找和修复错误。
2. “对象变量或 With 块变量未设定”这个错误通常发生在你试图使用一个未被初始化的对象变量或With块变量时。
VBA无法找到这个变量的定义或实例化。
解决方法:- 确保你已正确声明和实例化了需要使用的对象变量。
- 检查是否在使用对象变量之前正确地为其赋值。
3. “超出范围”当你在操作数组或集合时,如果索引超出了范围,就会出现这个错误。
例如,你试图访问一个不存在的数组元素或集合成员。
解决方法:- 确保你正确地指定了数组的索引和集合的成员。
- 检查这些数组和集合是否为空,是否包含足够的元素。
4. “类型不匹配”如果你在VBA代码中使用了不匹配的数据类型,就会出现类型不匹配的错误。
例如,你试图将一个字符串赋值给一个数值类型的变量。
解决方法:- 确保你的变量和函数的数据类型匹配,并进行必要的类型转换。
- 使用VBA的数据类型转换函数(如CInt、CDbl等)来实现类型间的转换。
5. “找不到对象”当你尝试使用VBA代码引用一个不存在或未加载的对象时,就会出现这个错误。
这可能是因为你引用的对象名称拼写错误或该对象尚未被正确加载。
解析 VBA 常见问题和解决方案

解析 VBA 常见问题和解决方案VBA(Visual Basic for Applications)是一种宏语言,用于编写Microsoft Office应用程序中的自定义功能。
尽管VBA是一种非常强大和灵活的工具,但在使用过程中可能会遇到一些常见问题。
本文将解析VBA的常见问题,并提供相应的解决方案,帮助读者更好地应对这些问题。
第一个常见问题是“编译错误”。
这种错误通常是由于代码中的语法错误或逻辑错误导致的。
要解决这个问题,首先需要仔细检查代码,确保所有的语法都是正确的,并且逻辑流程是正确的。
有时,可能需要对代码进行逐步调试,以逐步恢复错误的部分,并找到问题所在。
第二个常见问题是“运行时错误”。
这种错误在代码执行期间发生,并且通常与输入数据的无效性或程序逻辑错误有关。
要解决这个问题,可以使用调试工具,如逐步执行或设置断点,来检查问题所在。
还可以添加一些错误处理的代码,以便在出现错误时进行适当的处理。
第三个常见问题是“性能问题”。
由于VBA是一种解释性语言,相对于编译语言来说,执行速度可能会慢一些。
要解决这个问题,可以考虑对代码进行优化,如减少循环嵌套层级、避免不必要的变量赋值和计算等。
此外,还可以使用一些VBA特定的技巧,如使用数组而不是单个变量来处理大量数据,以提高代码的执行效率。
第四个常见问题是“界面问题”。
在使用VBA编写用户界面时,可能会遇到一些问题,如界面组件的布局和样式等。
要解决这个问题,可以使用VBA的界面设计工具,如用户窗体和控件,来创建自定义界面。
还可以使用VBA 的图形处理功能,如绘制图表和图形等,来增强用户体验。
第五个常见问题是“内存溢出”。
由于VBA是一种脚本语言,对于大型数据集或复杂计算,可能会导致内存不足的问题。
要解决这个问题,可以考虑使用适当的数据结构和算法来减少内存占用。
此外,还可以使用VBA的内存管理功能,如垃圾回收机制,及时释放不再需要的内存空间。
第六个常见问题是“安全性问题”。
第10章 VB常见错误类型和程序调试方法

10.3 程序调试方法
在设计或中断模式下,将鼠标移动到“工具”菜单上右击,在随后 出现的快捷菜单上选择“调试”命令,出现如图10-1所示的“调试” 工具栏。 下面重点介绍与程序调试有关的几个工具按钮的作用。
(1)切换断点
在程序代码中设置或取消断点,程序执行到该语句时停下来。 注意:设置断点的方法是在代码窗口中选择一条语句,单击“切换断 点”按钮或按F9键,该语句变为暗红色,即设置成功,程序中允许 设置多个断点。再次用同样的方法便取消断点。按Ctrl + Shift + F9组 合键清除所有断点。
返回
10.3 程序调试方法
调试程序是一件复杂的工程,不但要求程序员对系统设计结果非常 熟悉,思路清晰,更需要不断地在实践中积累经验。 这里程序调试的基本方法包括:中断模式调试、调试工具调试和编写 错误处理程序。重点介绍前两种方法。
1.中断模式
在VB集成开发环境中,程序有设计、运行和中断三种模式VB的标题 栏会列出当前的模式。在设计模式下,程序员可改变应用程序的设 计和代码,但所作不能改变对应用程序运行的影响;在运行模式下, 程序员可以监视应用程序的行为,但不能直接修改代码;中断模式可 以暂停应用程序的执行,
上一页 下一页 返回
10.3 程序调试方法
(2)逐语句与立即窗口 逐语句是指程序将逐个语句执行,一句一停。在逐语句执行时,用 户会看到正在执行的语句为黄色,同时出现一个“立即”窗口,用 户可以在“立即”窗口使用Print方法或问号(?)查看变量或表达式的 值,如图10 -2所示。 (3)逐过程 每单击一次“逐过程”按钮将执行一个过程或函数,同时也会出现 一个“立即”窗口。用户可以在“立即”窗口使用Print方法或问号(?) 查看变量或表达式的值。和逐语句相比,二者的不同之处在于逐过 程不跟踪到过程或函数内音f。
vb中的常见错误与分析汇总

常见错误和难点分析1.在选择结构中缺少配对的结束语句对多行式的If块语句中,应有配对的End If语句结束。
否则,在运行时系统会显示"块 If没有End If"的编译错误。
同样对Select Case语句也应有与其相对应的End Select语句。
2.多边选择ElseIf关键字的书写和条件表达式的表示多边选择ElseIf子句的关键字ElseIf之间不能写有空格,即不能写成Else If。
在多个条件表达式的表示时,应从最小或最大的条件依次表示,以避免条件的过滤。
例如,已知输入某课程的百分制成绩mark,要求显示对应五级制的讦定,评定条件如下:有以下几种表示方式,语法上都没有错,但执行后结果有所不同,请分析哪些正确? 哪些错误?下面给出的答案中,方法一、二、五正确,其余错误,请分析各自的原因。
3.Select Case语句的使用(1)"表达式列表i" 中不能使用"变量或表达式"中出现的变量。
例如,上述多边选择的例子改为Select Case语句实现,方法一Case子句中出现变量mark,运行时不管mark的值多少,始终执行Case Else子句,运行结果不正确;方法二、方法三正确。
(2)在"变量或表达式"中不能出现多个变量。
实验三第5题对三门课程奖学金的判断,只能用If语句的多边选择,而不能用SelectCase语句实现。
例如,有人用如下语句表示:Select Case markl,mark2,mark3Case (markl+mark2+mark3)/3>=95Print"一等奖"End Select这样就会在 "Select Case markl,mark2,mark3" 语句行出现编辑错误, 同时Case (markl+mark2 +mark3)/3>=95书写也错误。
第10章 VB常见错误类型和程序调试方法
10.1 常见错误类型 10.2 程序中逻辑错误的特点 10.3 程序调试方法
10.1 常见错误类型
程序中的错误大体可分为三类:即编译错误、实时错误和逻辑错误。 编译错误多数是因为不正确的代码产生的,即在编写程序时书写了 错误的语法,从而导致VB编译器无法正确解释源代码而产生的错误, 因此也称为语法错误。
(5)查看或控制应用程序运行的下一个语句。
(6)立即运行VB语句。 (7)手工控制应用程序的运行。
上一页 下一页 返回
10.3 程序调试方法
在运行应用程序时进入中断模式的方法如下: (1)按C trl+Break键。 (2)选择“运行”|“中断”命令。 (3)单击标准工具栏上的“中断”按钮。 在下列情况下自动进入中断模式: (1)语句中产生一个运行错误(“选项”对话框“通用”选项卡上的 “发生错误时中断”选项处于选中状态)。
上一页 下一页 返回
10.4 常见错误信息表
常见错误信息表如表10-1所示。
返回
图10-1 调试工具
返回
图10-2 逐语句执行与“立即”窗口
返回
图10-3 本地窗口
返回
图10-4 “添加监视”对话框
返回
图10-5 “快速监视”对话框
返回
图10-6 “调用堆栈”窗口
返回
表10-1 常见编译错误
设置断点的方法:
(1)选择“调试”|“切换断点”命令。 (2)按功能键F9。
(3)在需要设置断点的代码行上单击鼠标右键,在弹出的快捷菜单中 选择“切换”|“断点”命令。
上一页 下一页 返回
高中信息技术学业水平考试专题复习VB程序典型错误分析
高中会考专题复习——Visual Basic 程序调试典型错误分析VB 中常见的程序调试错误可分为编译错误、实时错误两大类。
一.编译错误编译错误是指在程序编译过程中出现的错误。
在编写程序时,如果语句不符合Visual Basic 的语法规则,就会产生这类错误。
的语法规则,就会产生这类错误。
例如,输入了不正确的关键例如,输入了不正确的关键字、遗漏了某个必需的标点符号、缺少表达式、类型不匹配或者应该配对的语句没有配对等,都会产生编译错误。
典型错误举例1(如图1所示)程序代码:For i=0to 10If I mod 2=0ThenPrint iNext iEnd lf 图1错误原因:块If 语句必须有配对的End If 语句,For 语句必须有配对的Next 语句,如果没有正确配对必然发生错误。
典型错误举例2(如图2所示)程序代码:Private Sub Form_Load()Label1.Captin =DateEnd Sub图2错误原因:错误原因:代码中对象的属性或方法不存在,代码中对象的属性或方法不存在,代码中对象的属性或方法不存在,可能是代码输入错误,可能是代码输入错误,可能是代码输入错误,将方法将方法或属性的名称拼写错误。
本例中把“Caption”写成了“Captin”,发生了编译错误。
典型错误举例3(如图3所示)Private Sub Command1_Click()Lal1.Caption=Txt1.Text&"同学,您好!欢迎进入学习系统!"End Sub图3错误原因:VB编译系统认为语句没有结束,但是初学者出现这个错误的极大可能是在字符串连接运算符"&"的前后各少了一个空格。
典型错误举例4(如图4所示)程序代码:Private Sub Command1_Click()Dim x As SingleDim y As Singlex=-10y=Abc(x)Label1.Caption=Str(y)End Sub图4错误原因:本题错在y=Abc(x),其中Abc(x)不是内置函数,如使用需要预先定义好。
学考选考常见VB出错信息(原创)
学考选考常见VB出错信息1.要求对象
Private Sub Command1_Click()
Dim a As Integer
a = Val(Text1.Text)
b = Sqr(a)
Text1.Text = Str(a)
End Sub
原因:窗体上缺少Text1对象解决:在窗体上添加Text1对象2.无效的过程调用或参数/ 参数不可选
解决上述问题后,输入-5
原因:Sqr()为算术平方根函数,其参数不能为负。
原因:AddItem方法格式不对
3.子程序或函数未定义
b=abc(a)
原因:没有名为abc的函数或过程
a(i)=0
原因:未定义数组
4.下标越界
原因:数组下标超出声明的范围5.Next 没有For / For 没有Next
原因:If 结构不完整,缺少End If
原因:For结构不完整
6.溢出
原因:变量s运行过程中超出整型的范围
7.除数为零
原因:作为除数的变量或表达式的值为0
8.类型不匹配
原因:s1为字符串型变量,不能使用str函数转换9.未找到方法或数据成员
原因:Textbox类对象没有Caption方法或属性。
VB常见错误类型和程序调试方法
10.3 程序调试方法
在运行应用程序时进入中断模式的方法如下: (1)按C trl+Break键。 (2)选择“运行”|“中断”命令。 (3)单击标准工具栏上的“中断”按钮。 在下列情况下自动进入中断模式: (1)语句中产生一个运行错误(“选项”对话框“通用”选项卡上的
精品课件
返回
10.2 程序中逻辑错误的特点
逻辑错误的特点是源程序在语法上没有问题,也没有出现无效操作 等类型的运行错误,但是程序未按预期方式执行,产生了不正确的 运行结果。
逻辑错误只能通过对程序运行结果进行分析才能被发现。
精品课件
返回
10.3 程序调试方法
调试程序是一件复杂的工程,不但要求程序员对系统设计结果非常 熟悉,思路清晰,更需要不断地在实践中积累经验。
精品课件
下一页 返回
10.3 程序调试方法
并允许程序员在任何时候快速查看应用程序的状态,显示变量和属 性的值,方便程序员发现程序中存在的问题。
当一个应用程序处于中断模式时,可以完成下列工作: (1)修改应用程序中的代码。 (2)观察应用程序的接口条件。 (3)确定已被调用的活动过程。 (4)监视变量、属性的值。 (5)查看或控制应用程序运行的下一个语句。 (6)立即运行VB语句。 (7)手工控制应用程序的运行。
这里程序调试的基本方法包括:中断模式调试、调试工具调试和编写 错误处理程序。重点介绍前两种方法。
1.中断模式
在VB集成开发环境中,程序有设计、运行和中断三种模式VB的标题 栏会列出当前的模式。在设计模式下,程序员可改变应用程序的设 计和代码,但所作不能改变对应用程序运行的影响;在运行模式下, 程序员可以监视应用程序的行为,但不能直接修改代码;中断模式可 以暂停应用程序的执行,
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
常见错误和难点分析1.在选择结构中缺少配对的结束语句对多行式的If块语句中,应有配对的End If语句结束。
否则,在运行时系统会显示"块 If没有End If"的编译错误。
同样对Select Case语句也应有与其相对应的End Select语句。
2.多边选择ElseIf关键字的书写和条件表达式的表示多边选择ElseIf子句的关键字ElseIf之间不能写有空格,即不能写成Else If。
在多个条件表达式的表示时,应从最小或最大的条件依次表示,以避免条件的过滤。
例如,已知输入某课程的百分制成绩mark,要求显示对应五级制的讦定,评定条件如下:有以下几种表示方式,语法上都没有错,但执行后结果有所不同,请分析哪些正确? 哪些错误?下面给出的答案中,方法一、二、五正确,其余错误,请分析各自的原因。
3.Select Case语句的使用(1)"表达式列表i" 中不能使用"变量或表达式"中出现的变量。
例如,上述多边选择的例子改为Select Case语句实现,方法一Case子句中出现变量mark,运行时不管mark的值多少,始终执行Case Else子句,运行结果不正确;方法二、方法三正确。
(2)在"变量或表达式"中不能出现多个变量。
实验三第5题对三门课程奖学金的判断,只能用If语句的多边选择,而不能用SelectCase语句实现。
例如,有人用如下语句表示:Select Case markl,mark2,mark3Case (markl+mark2+mark3)/3>=95Print"一等奖"End Select这样就会在 "Select Case markl,mark2,mark3" 语句行出现编辑错误, 同时Case (markl+mark2 +mark3)/3>=95书写也错误。
第四章常见错误和难点分析1.不循环或死循环的问题主要是循环条件、循环初值、循环终值、循环步长的设置有问题。
例如,以下循环语句不执行循环体:For i=10 To 20 Step-1 ' 步长为负,初值必须大于等于终值,才能循环For i=20 To10 ' 步长为正,初值必须小于等于终值,才能循环Do While False ' 循环条件永远不满足,不循环例如,以下循环语句死循环:For i=10 To 20 Step 0 ' 步长为零,死循环Do While 1 ' 循环条件永远满足,死循环2.循环结构中缺少配对的结束语句For…Next语句没有配对的Next语句;Do语句没有一个终结的Loop语句等。
3.循环嵌套时,内外循环交叉For I=1 to 4For j=1 to 5…Next iNext j上述循环的交叉运行时显示"无效的Next控制变量引用"。
4.累加、连乘时,存放累加、连乘结果的变量赋初值问题(1) 一重循环在一重循环中,存放累加、连乘结果的变量初值设置应在循环语句前。
例如,求1~100的3的倍数和,结果放入Sum变量中,如下程序段,输出结果如何?应作如何改进?Private SubForm_Click()For i=3 To 100 Step 3Sum=0Sum=Sum+iNext iPrint SumEnd Sub(2) 多重循环在多重循环中,存放累加、连乘结果的变量初值设置放在外循环语句前,还是内循环语句前,这要视具体问题分别对待。
例如,期末30位学生参加三门课程的考试,求每个学生的三门课程的平均成绩如下程序能否实现?aver=0For i=1 To 30For j=1 To 3m=InputBox("输入第"&j&"门课的成绩")aver=aver+mNext javer=aver/3Print averNext I第五章常见错误和难点分析1.Dim数组声明有时用户为了程序的通用性,声明数组的上界用变量来表示,如下程序段: n=InputBox("输入数组的上界")Dim a(1 To n) As Integer程序运行时将在Dim语句处显示"要求常数表达式"的出错信息。
即Dim语句中声明的数组上,下界必须是常数,不能是变量。
解决程序通用的问题,一是将数组声明的很大,这样浪费一些存储空间;二是利用动态数组,将上例改变如下:Dim a() As Integern=InputBox ("输入数组的上界")ReDim a(1 To n)As Integer2.数组下标越界引用了不存在的数组元素,即下标比数组声明时的下标范围大或小即为越界。
例如,要形成有如下30项的斐波那契数列:1,1,2,3,5,8,13,21,34,…,317811,514229,832040正确的程序段如下:Dim a(1 To 30) As Long, i%若将For i=3 To 30改为For i=1 To 30,程序运行时会显示"下标越界"的出错信息,因为开始循环时i=l,执行到循环体语句a(i)=a(i-2)+a(i-1),数组下标i-2、i-1均小于下界1。
同样若将上例:a(i)+a(i-2)+a(i-1) 语句改为:a(i+2)=a(i)+a(i+1)程序运行时也会显示"下标越界"的出错信息,这时是数组下标大于上界30。
3.数组维数错数组声明时的维数与引用数组元素时的维数不一致。
例如,下程序段为形成和显示3×5的矩阵:Dim a(3,5) As LongFor i=1 To 3For j=1 To 5a(i)=i*jPrint a(i);"";Next jPrintNext i程序运行到a(i)=i*j语句时出现"维数错误"的信息,因为在Dim声明时是二维数组,引用时的一个下标。
4.Aarry函数使用问题Aarry函数可方便地对数组整体赋值,但此时只能声明Variant的变量或仅由括号括起的动态数组。
赋值后的数组大小由赋值的个数决定。
例如,要将1,2,3,4,5,6,7这些值赋值给数组a,下表列出了三种错误及相应正确的赋值方法。
Aarry函数表示方法5.如何获得数组的上界、下界Aarry函数可方便地对数组整体赋值,但在程序中如何获得数组的-上界、下界,以保证访问的数组元素在合法的范围内,可使用UBound和LBound函数来决定数组访问。
在上例中,若要打印a数组的各个值,可通过下面程序段实现:For i=Lbound(A) To Ubound(A)Print a(i)Next l6.给数组赋值VB6.0提供了可对数组整体赋值的新功能,方便了数组对数组的赋值操作。
但真正使用不那么方便,有不少限制。
数组赋值形式如下:数组名2=数组名1这里的数组名2,实际上在前面的数组声明时,只能声明为Varian的变量,赋值后的数组2的大小、维数、类型同数组名1;否则,若声明成动态或静态的数组,例如:Dim数组名2() 或Dim数组名2 (下标)程序在运行到上述赋值语句时显示"不能给数组赋值"的出错信息。
第五章数组5.1 知识要点1.数组的概念数组:存放具有相同性质的一组数据,也就是数组中的数据必须是同一个类型和性质。
数组元素:数组中的某一个数据项。
数组元素的使用同简单变量的使用。
2.静态数组的声明静态数组:在声明时已确定了数组元素个数。
声明形式:Dim数组名([下界To]上界[,[下界To]上界[,…]])As 类型此语句声明了数组名、数组维数、数组大小、数组类型。
[注意] 下界、上界必须为常数,不能为表达式或变量:省略下界,默认为0,也可用Option Base语句重新设置下界的值。
3.动态数组的声明声明形式:Dim数组名 ()ReDim [Preserve]数组名([下界To]上界[,[下界To]上界[,…]])[注意]此时的上界、下界可以是赋了值的变量或表达式。
若有Preserve关键字,表示当改变原有数组最末尾的大小时,使用此关键字可以保持数组中原来的数据。
4.控件数组即相同类型的控件组成的数组。
控件数组的建立:在设计时的窗体上,通过对某控件的复制和粘贴操作:在程序运行时通过Load方法实现。
控件数组元素:由控件的Index属性值表示数组的F标。
5.数组的操作应掌握的基本操作有:数组初始化、数组输入、数组输出、求数组中的最大(最小)元素及下标、求和、平均值、排序和查找等。
5.2 常见错误和难点分析1.Dim数组声明有时用户为了程序的通用性,声明数组的上界用变量来表示,如下程序段: n=InputBox("输入数组的上界")Dim a(1 To n) As Integer程序运行时将在Dim语句处显示"要求常数表达式"的出错信息。
即Dim语句中声明的数组上,下界必须是常数,不能是变量。
解决程序通用的问题,一是将数组声明的很大,这样浪费一些存储空间;二是利用动态数组,将上例改变如下:Dim a() As Integern=InputBox ("输入数组的上界")ReDim a(1 To n)As Integer2.数组下标越界引用了不存在的数组元素,即下标比数组声明时的下标范围大或小即为越界。
例如,要形成有如下30项的斐波那契数列:1,1,2,3,5,8,13,21,34,…,317811,514229,832040正确的程序段如下:Dim a(1 To 30) As Long, i%若将For i=3 To 30改为For i=1 To 30,程序运行时会显示"下标越界"的出错信息,因为开始循环时i=l,执行到循环体语句a(i)=a(i-2)+a(i-1),数组下标i-2、i-1均小于下界1。
同样若将上例:a(i)+a(i-2)+a(i-1) 语句改为:a(i+2)=a(i)+a(i+1)程序运行时也会显示"下标越界"的出错信息,这时是数组下标大于上界30。
3.数组维数错数组声明时的维数与引用数组元素时的维数不一致。
例如,下程序段为形成和显示3×5的矩阵:Dim a(3,5) As LongFor i=1 To 3For j=1 To 5a(i)=i*jPrint a(i);"";Next jPrintNext i程序运行到a(i)=i*j语句时出现"维数错误"的信息,因为在Dim声明时是二维数组,引用时的一个下标。