是把代码写在子过程、函数过程或属性过程外而发生的错误。
在过程外无效:
该语句必须发生在子过程、函数过程或属性过程(Property Get、Property Let 和
Property Set)内部。这个错误的起因与解决方法如下所示:
*一个可执行的语句,如 Static 或 ReDim,出现在模块级别中。
在模块级中 Static 是不需要的,因为所有的模块级变量都是静态的。在模块级中用 Dim 来代替
ReDim。想要在模块级中创建动态数组,请用
Dim 加空括弧来声明它。
注意 在模块级只能使用注释与声明性语句,例如
Const、Declare、Deftype、Dim、Option Base、Option
Compare、Option Explicit、Option
Private、Private、Public 和
Type。子过程、函数过程和属性过程语句发生在它们的过程体之外,但在过程内声明。
'是VB中的注释语句,它和它后面的语句VB都会视而不见,你写:a'=XXXVB会认为是就是执行a这个过程,可实际上没有这个过程。
改成如下(我把变量a'改成了a1):
Dim a As Integer
Private Sub Command1_Click()
a = 0
b = 1
Do
If ((a + b) / 2) = 0 Then
a1=(a+b)/2
'跳出循环是exit do↓
exit do
Else
If f(a) * f((a + b) / 2) < 0 Then
b = (a + b) / 2
Else
a = (a + b) / 2
End If
a1=a
b1=b
End If
VB无效外部过程
此段语法错误严重。如果用INPUT语句,应该是用于文件输入,此前必须打开一个文件(包括文件号)读入文件中的数据,如:
open
"d:\aaa.dat"
for
input
as
#1
input
#1
,a,b,c
从文件aaaa中顺序读入三个数分别赋给a,b,c.
或者用inputbox函数输入:
a
=
InputBox("a=",
a)
b
=
InputBox("b=",
b)
c
=
InputBox("c=",
c)
d
=
b
^
2
-
4
*
a
*
c
If
d
>=
0
Then
p
=
-b
/
(2
*
a)
q
=
Sqr(d)
/
(2
*
a)
If
d
=
0
Then
Print
"x1=x2=";
p
Else
Print
"X1,X2=";
p
+
q,
p
-
q
End
If
Else
Print
"No
real
root."
End
If
最后一个END去掉,才能看到窗体上的结果。
百年天地回元气
一统山河际太平
国泰民安
你不会是直接放在通用代码里面吧?
放在过程里面,比如这样
Private
Sub
Form_Click()
f1
=
0
f2
=
1
Print
f1,
f2
i
=
3
Do
f3
=
f2
+
f1
Print
f3
f1
=
f2
f2
=
f3
i
=
i
+
1
Loop
While
i
<
50
End
Sub
左击一下窗体就开始运行了