如何在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
提交
取消
