set引用一个自定义变量出错:需要对象(错误 424)

Herro 2003-12-21 02:23:41
代码如下:
Private Type AnimSurf
.....
End Type
Private Type Script
abc() as AnimSurf
.....
End Type

Dim a() as Script

Static NowAnimSurf as AnimSurf
Set NowAnimSurf = a(i).abc(j)

这句set出错,有什么办法解决么?
我想直接用一个变量引用abc(j),这样增加可读性。
我可不想写a(xxxxxx).abc(xxxx).xxxxx这种超长代码啊。。。

谢谢各位了。
...全文
12 点赞 收藏 4
写回复
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Herro 2003-12-21
我想要引用这个自定义类型变量,就像指针一样,这样以后方便许多。。

看来没办法,只能用with了。。-.-
回复
rainstormmaster 2003-12-21
先看看set语句的说明:

Set 语句
描述
将对象引用赋给变量或属性。
语法
Set objectvar = {objectexpression | Nothing}
Set 语句的语法包含以下部分:

部分 描述
objectvar 变量或属性的名称,遵循标准变量命名约定。
objectexpression 由对象名称、另一个已声明为相同对象类型的变量或返回相同对象类型的对象的函数或方法组成的表达式。
Nothing 停止 objectvar 与任何指定对象的关联。当没有其他变量引用 objectvar 原来所引用的对象时,如将其赋为 Nothing 会释放与该对象所关联的所有系统和内存资源。


说明
为确保有效,objectvar 必须与所赋对象的类型一致。
Dim、Private、Public 或 ReDim 语句只声明了引用对象的变量。只有使用 Set 语句将指定对象赋予该变量后,才能引用实际的对象。

通常,当使用 Set 将一个对象引用赋给变量时,并不是为变量创建对象的副本,而是创建对象的引用。可有多个对象变量引用同一个对象。因为这些变量是对象引用(不是副本),所以对对象所作的任何改动都会影响所有引用该对象的变量。


而很明显,你使用的是自定义类型的变量(数组),不是对象,不应该使用set语句
把你代码中的set去掉,或者使用let代替set应该就可以了

另外

Private Type Script
abc() as AnimSurf
.....
End Type

你的Type Script定义的abc是个动态数组,在初始化时要小心一些,最好定义成静态数组,像这样:

Private Type Script
abc(10) as AnimSurf
.....
End Type
回复
byj2001329 2003-12-21
我想你定义的不是类,只是自定义类型,
用NowAnimSurf = a(i).abc(j) 就可以了
回复
SoHo_Andy 2003-12-21

with
end with

语句即可

with a(xxxxxx).abc(xxxx)
.xxxxx=""
end with
回复
发动态
发帖子
VB基础类
创建于2007-09-28

7451

社区成员

VB 基础类
申请成为版主
社区公告
暂无公告