为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Excel VBA中使用Implements

如何在Excel VBA中使用Implements

如何在Excel VBA中使用Implements我正在尝试为工程项目实现一些形状并将其抽象出来用于一些常见功能,以便我可以使用通用程序。我正在尝试做的是有一个调用的接口,cShape并拥有cRectangle并cCircle实现cShape我的代码如下:cShape 接口Option ExplicitPublic Function getArea()End FunctionPublic Function getInertiaX()End FunctionPublic Function getInertiaY()End FunctionPublic Function toString()End FunctioncRectangle 类Option ExplicitImplements cShapePublic myLength As Double ''going to treat length as dPublic myWidth As Double ''going to treat width as bPublic Function getArea()     getArea = myLength * myWidthEnd FunctionPublic Function getInertiaX()     getInertiaX = (myWidth) * (myLength ^ 3)End FunctionPublic Function getInertiaY()     getInertiaY = (myLength) * (myWidth ^ 3)End FunctionPublic Function toString()     toString = "This is a " & myWidth & " by " & myLength & " rectangle."End FunctioncCircle 类Option ExplicitImplements cShapePublic myRadius As DoublePublic Function getDiameter()     getDiameter = 2 * myRadiusEnd FunctionPublic Function getArea()     getArea = Application.WorksheetFunction.Pi() * (myRadius ^ 2)End Function''Inertia around the X axisPublic Function getInertiaX()     getInertiaX = Application.WorksheetFunction.Pi() / 4 * (myRadius ^ 4)End Function''Inertia around the Y axis''Ix = Iy in a circle, technically should use same functionPublic Function getInertiaY()     getInertiaY = Application.WorksheetFunction.Pi() / 4 * (myRadius ^ 4)End FunctionPublic Function toString()     toString = "This is a radius " & myRadius & " circle."End Function问题是每当我运行我的测试用例时,它都会出现以下错误:编译错误:对象模块需要为接口'〜'实现'〜'
查看完整描述

3 回答

?
函数式编程

TA贡献1807条经验 获得超9个赞

关于VBA和“Implements”语句有两个未记载的附加内容。

  1. VBA不支持派生类的继承接口的方法名称中的非核心字符“_”。它不会使用cShape.get_area等方法编译代码(在Excel 2007下测试):VBA将为任何派生类输出上面的编译错误。

  2. 如果派生类没有实现在接口中命名的自己的方法,则VBA会成功编译代码,但该方法将通过派生类类型的变量无法实现。


查看完整回答
反对 回复 2019-07-26
  • 3 回答
  • 0 关注
  • 1298 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信