如何在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”语句有两个未记载的附加内容。
VBA不支持派生类的继承接口的方法名称中的非核心字符“_”。它不会使用cShape.get_area等方法编译代码(在Excel 2007下测试):VBA将为任何派生类输出上面的编译错误。
如果派生类没有实现在接口中命名的自己的方法,则VBA会成功编译代码,但该方法将通过派生类类型的变量无法实现。
添加回答
举报
0/150
提交
取消