首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用ExcelVBA中的实现

如何使用ExcelVBA中的实现
EN

Stack Overflow用户
提问于 2018-03-23 05:14:26
回答 2查看 0关注 0票数 0

我试图为一个工程项目实现一些形状,并将其抽象为一些常见的函数,这样我就可以有一个通用的程序。

我想做的是有一个名为cShapecRectanglecCircle实施cShape

我的代码如下:

cShape界面

代码语言:txt
复制
Option Explicit

Public Function getArea()
End Function

Public Function getInertiaX()
End Function

Public Function getInertiaY()
End Function

Public Function toString()
End Function

cRectangle

代码语言:txt
复制
Option Explicit
Implements cShape

Public myLength As Double ''going to treat length as d
Public myWidth As Double ''going to treat width as b

Public Function getArea()
    getArea = myLength * myWidth
End Function

Public Function getInertiaX()
    getInertiaX = (myWidth) * (myLength ^ 3)
End Function

Public Function getInertiaY()
    getInertiaY = (myLength) * (myWidth ^ 3)
End Function

Public Function toString()
    toString = "This is a " & myWidth & " by " & myLength & " rectangle."
End Function

cCircle

代码语言:txt
复制
Option Explicit
Implements cShape

Public myRadius As Double

Public Function getDiameter()
    getDiameter = 2 * myRadius
End Function

Public Function getArea()
    getArea = Application.WorksheetFunction.Pi() * (myRadius ^ 2)
End Function

''Inertia around the X axis
Public 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 function
Public Function getInertiaY()
    getInertiaY = Application.WorksheetFunction.Pi() / 4 * (myRadius ^ 4)
End Function

Public Function toString()
    toString = "This is a radius " & myRadius & " circle."
End Function

问题是,每当我运行测试用例时,都会出现以下错误:

编译错误: 对象模块需要为接口实现‘~’

EN

Stack Overflow用户

发布于 2018-03-23 14:18:27

有两个关于VBA和“Implementations”语句的无文档添加。

  1. VBA不支持undescore字符_‘在派生类的继承接口的方法名称中。它不会用cShape.get之类的方法编译代码。_区域(在Excel 2007下测试):vba将输出上述任何派生类的编译错误。
  2. 如果派生类没有实现自己的方法(如接口中的方法),VBA将成功编译代码,但该方法将通过派生类类型的变量不可访问。
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100004299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档