|
有个过程count1()调用count2(),运行就提示count1()里面的第3句 编译错误: “ByRef 参数类型不符”,同时那个 Call count2( r )里的参数 r 被选中。
程序如下
Dim new_r As Integer
Public Sub count1()
Dim r, begin_r As Integer
begin_r = Worksheets(1).Range("h2").Value
new_r = Worksheets(1).Range("h4").Value
For r = begin_r To new_r
Call count2( r )
next
end sub
____________________________________________________
被调用的count2( ) 里面的临时变量也定义了,其内容就不附上了。
Public Sub countso302(temp_r As Integer)
后来我把第3句改成Dim r As Integer, begin_r As Integer就正常了。难道 r 与 begin_r不可以使用一个As Integer吗?
其它程序里我写过 Dim x, y, i, j, k, p, q, s As Integer,那么多变量使用一个As Integer也没出过错呀?
请教高手这是咋回事?
Dim x, y, i, j, k, p, q, s As Integer
这样的写法,As Integer 只对最后一个 s变量 起类型定义的作用。
其余将使用默认的As Variant
…………
正确的写法-1:
一行一行分开来写
Dim x As Integer
Dim y As Integer
Dim i As Integer
……
Dim s As Integer
或者正确的写法-2:
合并起来就很长、很难看。
Dim x As Integer, y As Integer, i As Integer, j As Integer, k As Integer, p As Integer, q As Integer, s As Integer
正确的写法-3:
可以用简写,用%代替As Integer:
Dim x%, y%, i%, j%, k%, p%, q%, s%
…………
总之,定义变量类型没办法偷懒,
除了默认 As Variant 可以省略,其它的都不能省。
以上。
|
|