2011年计算机二级考试VB常见错误和难点分析' ^' K2 A- `' C( a5 | J
1.标点符号错误
% z. @! c+ r- @9 c 在VB中只允许使用西文标点,任何中文标点符号在程序编译时产生"无效字符"错误,并在该行以红色字显示。用户在进入VB后不要使用中文标点符号。中、西文状态下标点号对照见下表所示。
& Q/ N: n2 T9 M& j& q* \$ @: r 中、西状态下标点符号对照
# G$ {' z% Z' z8 R- A1 X 2.字母和数字形状相似
6 X" X. u6 g, X, _( X L的小写字母"l"和数字"1"形式几乎相同、O的小写字母"o"与数字"0"也难以区,这在输入代码时要十分注意,避免单独作为变量名使用。! i" S9 U/ @) E1 e
3.对象名称(Name)属性写错) @/ l5 H) j) A3 r0 r% v) ~
在窗体上创建的每个控件都有默认的名称,用于在程序中唯一地标识该控件对象。系统为每个创建的对象提供了默认的对象名,例如,Text1、Text2、Command1、Label1等。用户可以将属性窗口的(名称)属性改为自己所指定的可读性好的名称,如txtInput、txtOutput、 cmdOk等。对初学者,由于程序较简单、控件对象使用较少,还是用默认的控件名较方便。! ]8 S" t0 L/ m" ?# i3 Y
当程序中的对象名写错时,系统显示"要求对象"的信息,并对出错的语句以黄色背景。用户可以在代码窗口的"对象列表"框检查该窗体所使用的对象。
4 a6 n; f4 o$ b7 i2 h6 a- d1 G+ _ 4.Name属性和Caption属性混淆- o/ ~# g1 w. r; |4 i
Name属性的值用于在程序中唯一地标识该控件对象,在窗体上不可见;而Caption属性的值是在窗体上显示的内容。
3 J- |4 ]5 z+ r: W' Y 5.对象的属性名、方法名写错9 p1 g1 C0 `- W8 E
当程序中对象的属性名、方法名写错时,VB系统会显示"方法或数据成员未找到"的信息。在编写程序代码时,尽量使用自动列出成员功能,即当用户在输入控件对象名和句点后,系统自动列出该控件对象在运行模式下可用的属性和方法,用户按空格键或双击鼠标即可,这样既可减少输入也可防止此类错误出现。
& d9 m* \0 X! M( y7 w+ d! T; V 6.变量名写错
; I/ w, j+ U. S4 i3 M, @ a8 V8 Y 用Dim声明的变量名,在后面的使用中表示同一变量而写错了变量名,VB编译时就认为是两个不同的变量。例如,下面程序段求1~100的和,结果放在Sum变量中:$ _% a, [9 l# I5 s+ Y
Dim sum As Integer,i As Integer
9 e% C3 k$ l( @5 @ Sum=0- O) z* ]( A( u
For i =1 to 100. B. q; b% j5 U8 g6 z. |( e6 G5 | [+ l
Sum=Sun+i
3 r$ i9 I; s; a" Y: s Next i) V: B9 E' \! E" g0 G& I
Print Sum
# E0 p; O* Q' L0 g6 k 显示的结果为100。原因是累加和表达式Sum=Sun+i中的右边的变量名Sum写成Sun。VB对变量声明有两种方式,可以用变量声明语句显式声明,也可以用隐式声明,即不声明直接使用。上述变量名的写错,系统为两个不同的变量各自分配内存单元,造成计算结果不正确。因此,为防止此类错误产生,必须对变量声明采用限制其为显式声明方式,也就是在通用声明段加Option Explicit语句。" ?. s' v1 c; E2 Q6 f# \( [/ m
7.语句书写位置错5 l: b+ {6 f5 R* w
在VB中,除了在"通用声明"段利用Dim等对变量声明语句外,其他任何语句都应在事件过程中,否则运行时会显示"无效外部过程"的信息。若要对模块级变量进行初始化工作,则一般放在Form Load()事件过程中。
( U! Q7 C/ C/ t. g. Y& K" P" L9 F' o 8.无意形成控件数组3 @/ N+ P) J0 l
若要在窗体上创建多个命令按钮,有些读者会先创建一个命令按钮控件,然后利用对该控件进行复制、粘贴,这时系统显示:已经有一个控件为"Command1"。创建一个控件数组吗?的信息,若单击"是"按钮,则系统创建了名称为Command1的控件数组。若要对该控件的 Click事件过程编程,系统显示的框架是:
# |; _3 C \; e& {. H6 o" _( L Private Sub Command1_Click(Index As Integer)
9 I* }# `7 C! K4 J! h# Z0 M7 c End Sub/ Y j" P3 P& _7 d3 C. d
Index表示控件数组的下标。7 ~( H1 F, J, R" H
若非控件数组,Click事件过程的框架是:
; k. k" A4 C6 w2 V3 t; @% j9 `' g Private Sub Command1_Click()
4 ^. u \: u3 C2 E4 X End Sub
) M1 A' @ d1 p7 n 请注意直到学习实验 数组前,一律不使用控件数组。* a; v3 H; {5 H% [5 m* R3 C
9.Print方法中定位问题
$ n) T5 D5 A6 O, ` 定位通过Tab、Spc函数和最后的逗号、分号和无符号来控制。VB中通过Print方法中各参数的综合使用达到所需的结果,但初学者往往难以掌握。3 q9 [- R. z1 Z& C
(1) Tab(n)与Spc(n)的区别
8 ?6 [- o9 P# F: A1 S, D. o2 U& f Tab(n)从最左第1列开始算起定位于第n列,若当前打印位置已超过n列,则定位于下一行的第n列,这是常常定位不好出现的问题。在格式定位中,Tab用得最多。3 V8 s# ~: b- C g: G+ i% N
Spc(n)从前一打印位置起空n个空格。例如,下面程序段显示了Tab与Spc的区别,效果如图所示。
6 a5 D4 m. |2 A$ M3 H J5 j Private Sub Commandl_Click()
. ]: ?+ J- K' t4 B Print "1234567890”,5 A, I$ }. Q3 P$ M2 Z I$ z
Print Tab(1);"**"’;Tab(2);"%%%";spc(2);"$$$$"
$ x' k5 Q, Y3 j. W/ d End Sub( v" V' J1 n" w$ b/ ^
: q& R g: a" ], G' {. A
# `: L: j# U# r& b3 J5 w$ _# s (2) 紧凑格式";"分号的使用
: g3 B& r( M4 c: Y3 F, O% w 紧凑格式";",即输出项之间无间隔。但对于数值型,输出项之间系统自动空一列,而由于数值系统自动加符号位,因此,大于零的数值,实际空两列。对于字符型之间无空格。
8 t3 F( T: o- A% a0 i' L$ U' N 例如,下面程序段,效果如图所示。- U& o! T- `) q# `: ?
- q8 ?+ ]3 e, l* j }
}0 x( ^1 {7 R" {4 t/ X" S' { Private Sub Command1_Click()
! w {7 |/ l6 m$ {9 K- @. {; @ Print 1;-2;3
' q& ^# f. K; s1 Z Print"1234";"5678"
2 N7 u# ~; _. Z% ?$ [5 z Print"A";"B";"C";"D","E","F"
) H# H5 ~9 z9 L s, m! r End Sub6 S6 g2 p0 M, o: [! c E; R
从该例应区分数值和字符在紧凑格式输出的差异。
5 J! H' y( v4 G4 i6 j4 j 10.打开工程时找不到对应的文件+ ]4 u4 H1 s; _. U( Q; }# Q! ~
一般,一个再简单的应用程序也应由一个工程.vbp文件和一个窗体.frm文件组成。工程文件9 X; ^, {& w( D/ ?9 U9 e
记录该工程内的所有文件(窗体.frm文件、标准模块.bas文件、类模块.cls文件等)的名称和所存放在磁盘上的路径。, T% ]: o, U( x
! L. h& K2 Z H8 ` 若在上机结束后,把文件复制到U盘上保存,但又少复制了某个文件,下次打开工程时就会显示"文件未找到"。也有在VB环境外,利用Windows资源管理器或DOS命令将窗体文件等改名,而工程文件内记录的还是原来的文件名,这样也会造成打开工程时显示"文件未找到"。 解决此问题的方法:一是修改.vbp工程文件中的有关文件名;二是通过"工程"菜单的"添加窗体"中的"现存"选项,将改名后的窗体加入工程。 |