1

我想在全球范围内声明类是我的例子:

我想使用看起来完全像这样的类 clsIEError:

Option Explicit

Public Sub m(msg As String, Optional title As String = "Title:")

    'Attribute Value.VB_UserMemId = 0

    'this method will be used as defualt method
    'and here are attributes msg and title used to create some inteface
End Sub

这就是它的工作原理示例1:

Sub CATMain()

     Dim ie As clsIEError
     Set ie = New clsIEError

     ie "test", "title"

     Set ie = Nothing
End Sub

但我的问题是我想在全球范围内拥有它示例2:

Option Explicit

Public ie As clsIEError

Private Function Init()
    Set ie = New clsIEError
End Function

Sub CATMain()
    Call Init

'   and to use it same as in example 1    
    ie "test", "title" 

'   but i am able to use it only like:
'   ie.m "test", "title" 'works as expected 

    Set ie = Nothing
End Sub

为什么使用公共默认方法不起作用?

4

2 回答 2

1

我可以确认这不像你描述的那样工作。我在运行时得到“预期的过程,而不是变量”,但没有编译错误。这一定是 VB 解析器中的错误,但这是我能想到的唯一解释。

我一直认为属性必须与元素名称匹配。你在哪里

Attribute Value.VB_UserMemId = 0

我以为你应该有

Attribute m.VB_UserMemId = 0

但无论哪种方式,它似乎都有效(使用本地声明的变量)。这是一个糟糕的答案,但答案是显式调用该方法。对不起。

于 2013-01-23T23:28:43.383 回答
0

我不确定它是否会明确回答您的问题,但是,就我而言,我想创建一个可以在整个项目中访问的类的实例。基本上我需要创建静态类或单例。我发现这篇文章非常有用。

于 2013-03-08T18:03:03.767 回答