功能"AddWeight“可以给每只宠物增加重量。我知道我所有的动物(继承)都有相同名称的basicInfo类型(“数据”),所以我确信"AddWeight“函数可以正确地处理它。
当然,Vba不会让我这么做,我试着在函数标题中声明对象或变体。他们都不为我工作。
有人有创意吗?
我不想为每一个动物编写这个函数,我也不认为像这样调用函数很优雅:
Call addWeight(Max_Cat.data)有人有别的主意吗?提前感谢
Type basicInfo
name As string
weight as integer
height as integer
End Type
Type cat
data As basicInfo
mustacheType As String
End Type
Type dog
data As basicInfo
bark_volume as integer
End Type
Dim Max_Cat as cat
Dim Buddy_Dog as dog
.
. some code
.
Call addWeight(Max_Cat)
Call addWeight(Buddy_Dog)
Public Function AddWeight(petName as object) 'not work also for petName as variant
petName.data.weight =petName.data.weight+50
End Function发布于 2017-01-05 23:59:33
正如注释中提到的,这不是严格意义上的“继承”。它更像是一个复合结构。如果您想使用Type来表示数据,那么最明显的解决方案就是传递您想要使用的成员,即basicInfo。
Sub SomeSub()
Dim Max_Cat As cat
Dim Buddy_Dog As dog
'Other stuff.
AddWeight Max_Cat.data
AddWeight Buddy_Dog.data
End Sub
Public Function AddWeight(animal As basicInfo)
animal.weight = animal.weight + 50
End Function如果您真的想使用接口,则需要构建类而不是类型。这样,您就可以让他们实现一个公共接口,然后使用该接口作为参数。这可能会给您提供更健壮和可扩展的代码。
https://stackoverflow.com/questions/41485312
复制相似问题