怎么办:自定义类 + 自定义类型
此问题与kevindude (kevin)的"自定义类型出错,谁来帮我! "类似
请大家再接再励、共谋对策
在模块中自定义类型
Public Type TagItem
Name as string
Text as string
end type
创建类TagClass
private mintNum as integer
Private muttTagList as TagItem
Friend sub AddTagItem(ipTag as TagItem)
dim intUb as integer
Redim muttTagList(1)
intUb = UBound(muttTagList)
redim preserve muttTagList(intUb + 2)
muttTagList(intUb+1).name = ipTag.name
muttTagList(intUb+1).text= ipTag.text
end sub
在Form1中有如下代码
dim a as object
dim b as TagItem
b.name = "bName"
b.Text = "bText"
set a as new tagclass
a.addtagitem(b)
编译时出错:
只有在公共对象模块中定义的公共用户定义数据类型可以作为参数、类模块的公共过程返回类型、公共用户定义类型的字段使用。
问题点数:100、回复次数:3Top
1 楼Rectangle(旺财)回复于 2002-04-18 16:55:10 得分 20
在类的方法传递的自定义类型必须是在模块中定义的全局的类型Top
2 楼gump2000(阿甘)回复于 2002-04-18 16:56:13 得分 70
Private mintNum As Integer
Private muttTagList() As TagItem
Friend Sub AddTagItem(ipTag As TagItem)
Dim intUb As Integer
ReDim muttTagList(1)
intUb = UBound(muttTagList)
ReDim Preserve muttTagList(intUb + 2)
muttTagList(intUb + 1).Name = ipTag.Name
muttTagList(intUb + 1).Text = ipTag.Text
End Sub
Private Sub Command1_Click()
Dim a As Class1
Dim b As TagItem
b.Name = "bName"
b.Text = "bText"
Set a = New Class1
a.AddTagItem b
End Sub
修改了几个地方,通过
Top
3 楼gpo2002(永吹不休)回复于 2002-04-18 23:59:52 得分 10
1,Private muttTagList as TagItem,非数组,无法用redim重定义
2,
Friend sub AddTagItem(ipTag as TagItem)
dim intUb as integer
Redim muttTagList(1)
intUb = UBound(muttTagList)
redim preserve muttTagList(intUb + 2)
muttTagList(intUb+1).name = ipTag.name
muttTagList(intUb+1).text= ipTag.text
end sub
该成:
Friend sub AddTagItem(ipTag as TagItem)
dim intUb as integer
intUb = UBound(muttTagList)
redim preserve muttTagList(intUb + 1 )
muttTagList(intUb+1).name = ipTag.name
muttTagList(intUb+1).text= ipTag.text
end sub
ReDim muttTagList(1)应该是在初始化时设置
Top




