相关疑难解决方法(0)

如何在Excel VBA中使用Implements

我正在尝试为工程项目实现一些形状并将其抽象出来以用于一些常见功能,以便我可以使用通用程序.

我正在尝试做的是有一个调用的接口,cShape并拥有cRectanglecCircle实现cShape

我的代码如下:

cShape 接口

Option Explicit

Public Function getArea()
End Function

Public Function getInertiaX()
End Function

Public Function getInertiaY()
End Function

Public Function toString()
End Function
Run Code Online (Sandbox Code Playgroud)

cRectangle

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) …
Run Code Online (Sandbox Code Playgroud)

excel vba interface excel-vba

60
推荐指数
4
解决办法
4万
查看次数

我们可以同时使用接口和事件吗?

我仍然试图围绕VBA中的接口和事件如何协同工作(如果有的话).我即将在Microsoft Access中构建一个大型应用程序,我希望尽可能灵活和可扩展.为此,我想利用MVC,接口(2)(3),自定义集合类,使用自定义集合类引发事件,找到更好的方法来集中管理由窗体上的控件触发的事件,以及一些额外的VBA设计模式.

我预计这个项目会变得非常毛茸茸,所以我想尝试在VBA中一起使用接口和事件的限制和好处,因为它们是我认为在VBA中真正实现松散耦合的两种主要方式(我认为).

首先,有一个问题是在尝试在VBA中一起使用接口和事件时引发的错误.答案指出"显然不允许事件通过接口类传递到具体类中,就像你想使用'Implements'一样."

然后我在另一个论坛答案中找到了这个陈述:"在VBA6中,我们只能引发在类的默认接口中声明的事件 - 我们不能引发在Implemented接口中声明的事件."

因为我还在寻找接口和事件(VBA是我真正有机会在现实环境中尝试OOP的第一种语言,我知道不寒而栗),我无法在脑海中彻底解决所有问题这意味着在VBA中一起使用事件和接口.听起来你可以同时使用它们,听起来有点像你不能.(例如,我不确定上面的"一个类的默认接口"与"一个已实现的接口"是什么意思.)

有人能给我一些基本的例子,说明在VBA中一起使用接口和事件的真正好处和局限吗?

oop ms-access vba interface access-vba

25
推荐指数
3
解决办法
2489
查看次数

VBA继承,超级模拟

例如,我有一个实现B类的A类

--- A级----

implements B
public sub B_do()
end sub
Run Code Online (Sandbox Code Playgroud)

- 班B ----

public sub do()
end sub
Run Code Online (Sandbox Code Playgroud)

如何从A调用do()?(super.do())那么,我如何为这两个类定义一些公共变量?现在我只能继承函数,子和属性......

补充:同一个问题http://social.msdn.microsoft.com/Forums/en-US/vbgeneral/thread/5a83d794-3da1-466a-83d3-5d2eb0a054b2

补充说:不可能跨类别分享变量.您应该实现属性(与函数相同).

excel inheritance vba excel-vba

16
推荐指数
2
解决办法
3万
查看次数

VBA:有类似抽象类的东西吗?

我正在使用一个接口来确保一些类似的类实现一些强制方法(子/函数).

例:

  • 接口I1声明M1和M2方法
  • C1和C2实现了I1,并且有自己的M1和M2版本.

C1和C2也需要完全相同的方法,例如方法SM1和SM2.

为了避免重复SM1和SM2,我想定义一个抽象类AC:

  • 实施I1
  • 定义SM1和SM2.

这将由C1和C2扩展

这个解决方案确实可以在Java中使用,但我找不到任何在VBA中执行相同操作的文档.(VB.Net似乎允许使用关键字MustInherit的抽象类.)

在VBA中是否可以确认?

excel vba abstract-class interface excel-vba

12
推荐指数
2
解决办法
8445
查看次数

VBA公共变量和属性之间的区别

有什么区别

Public Variable As Integer
Run Code Online (Sandbox Code Playgroud)

Private pVariable As Integer

Public Property Let Variable(ByVal lVariable As Integer)
    pVariable = lVariable
End Property

Public Property Get Variable()
    Variable = pVariable
End Property
Run Code Online (Sandbox Code Playgroud)

在VBA类模块中?

为什么我会使用第二个版本?

oop vba properties interface class

8
推荐指数
2
解决办法
1万
查看次数

对象模块需要为接口'~'实现'~'

所以我尝试将这些问题作为指导:

这是我在单击表单上的控件时遇到的错误:

错误消息

这是我的界面:

交易记录

Option Compare Database
Option Explicit

Public Property Get TRANSACTION_DATE() As Date
End Property
Run Code Online (Sandbox Code Playgroud)

这是我的课程:

账本记录

Option Compare Database
Option Explicit

Implements ITransactionRecord

'from interface
Private tTRANSACTION_DATE As Date

Private Property Get ITransactionRecord_TRANSACTION_DATE() As Date
    ITransactionRecord_TRANSACTION_DATE = TRANSACTION_DATE
End Property

Public Property Get TRANSACTION_DATE() As Date
    TRANSACTION_DATE = tTRANSACTION_DATE
End Property

Public Property Let TRANSACTION_DATE(ByVal newTRANSACTION_DATE As Date)
    tTRANSACTION_DATE = CDate(Format((newTRANSACTION_DATE), "m / d / yyyy"))
End Property …
Run Code Online (Sandbox Code Playgroud)

ms-access vba

3
推荐指数
1
解决办法
379
查看次数