2012-05-23 51 views
4

我是VB新手。我看網上說,爲了從一個函數返回,你做的東西如下 -從VB6中的函數返回用戶定義的類型

Private Function Add(ByVal x As Integer, ByVal y As Integer) As Integer 
    Dim Res as integer 
    Res = x + y 
    Add = Res  ' use the function's name 
End Function 

我的問題是,這是否也語法工作,用戶自定義類型?如果不是,語法是什麼。我試過以下 -

Public Function getDetails() As clsDetails 

Dim details As clsDetails 

Set details = New clsDetails 

With details 
    .X = "R" 
    .Y = "N" 
    .Z = "N" 
    ' more code follows 
End With 

getDetails = details 'gives error-> object variable or with block variable not set 

End Function 

但是,這給了我一個錯誤上面的行 - 「對象變量或塊變量未設置」。

我在這裏做錯了什麼?

回答

8

我想clsDetails不是一個UDT,而是一個類。對於定義爲對象的變量,您需要使用SET關鍵字。即:

set getDetails = details 

對於使用的UDT作爲函數返回值或參數的詳細信息,請參見:User Defined Type (UDT) as parameter in public Sub in class module (VB6)

+0

clsDetails已經是一個類。我不確定你的意思。 – CodeBlue

+1

如果你的函數返回一個對象(類實例),那麼你需要用'SET'來指定返回值。 – MicSim

相關問題