从VBA中的函数返回对象实例时出错

时间:2010-02-05 20:35:24

标签: ms-access vba

我正在尝试实例化一个对象并从函数返回它。我正在上课的是我创造的课程。但是,当我尝试将Object设置为从函数返回的内容时,我得到一个错误。我做错了什么?

Function CreateBlah(NAME As String, Count As Integer, val As String) As Blah
    Dim b As Blah
    Set b = New Blah
    bkmrk.Initialize NAME, Count, val
    MsgBox (bkmrk.NAME)
    CreateBlah = bkmrk
End Function

然后在另一个功能......

Dim bmrk As Blah
Set bmrk = CreateBlah("Test", 1, Trim(AString))

我也试过......

Dim bmrk As Object
Set bmrk = CreateBlah("Test", 1, Trim(AString))

我是VBA的新手,谁能告诉我我做错了什么?

2 个答案:

答案 0 :(得分:10)

您需要在分配对象的每个时间使用set 。这意味着设置返回值以及将返回值分配给变量时。 后期限制示例:

Public Sub Example()
    Dim objWrd As Object
    Set objWrd = GetWord
    objWrd.Visible = True
    objWrd.Quit
End Sub

Public Function GetWord() As Object
    Set GetWord = CreateObject("Word.Application")
End Function

早期限制示例:

Public Sub Example()
    ''//Requires reference to Microsoft Office Word
    ''//(Tools>References)
    Dim objWrd As Word.Application
    Set objWrd = GetWord
    objWrd.Visible = True
    objWrd.Quit
End Sub

Public Function GetWord() As Word.Application
    Set GetWord = New Word.Application
End Function

答案 1 :(得分:2)

我认为

Dim b As Blah
Set b = New Blah

实际应该阅读

Dim bkmrk As Blah
Set bkmrk = New Blah

如果是这样,你就错过了一个set关键字。

Set CreateBlah = bkmrk

一旦你修复了这个问题,那么两个版本的消费代码都应该有效,尽管前者更好,因为你强烈输入变量。