我正在尝试实例化一个对象并从函数返回它。我正在上课的是我创造的课程。但是,当我尝试将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的新手,谁能告诉我我做错了什么?
答案 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
一旦你修复了这个问题,那么两个版本的消费代码都应该有效,尽管前者更好,因为你强烈输入变量。