2012-05-23 56 views
0

我有一個窗體叫做Form1。在Form1,我有以下代碼 -如何使VB6函數從另一個表單調用時返回一個值?

Dim details As clsDetails 

Set details = getDetials(1) ' This fails. It doesn't assign a value. 

的getDetails功能在單獨的模塊中聲明如下 -

Public Function getDetials(detailNumber As Integer) As clsDetails 

    Dim details As clsDetails 

    Select Case detailNumber 
     Case "1" 
      Debug.Print "Inside case1" 

      Set details = getDetail1() 

      Debug.Print details.comment ' This prints correctly. 

    End Select 

    Set getDetails = details 

End Function 

然而,當我執行上面的代碼,以某種方式,其細節在可變儘管調用了getDetails函數並且在其中正確輸出了詳細信息,Form1仍未設置。如何糾正這一點?

回答

4

您是否定義了Option Explicit關鍵字?

看起來你可能有一個錯字。你的函數被稱爲getDetials,但是你設置結果的變量是getDetails,所以返回值沒有被設置。

我修復了錯字,一切正常,按照我的預期工作。使用Option Explicit關鍵字會捕獲這些類型的錯誤。

+0

Where Type to Option Explicit? – CodeBlue

+0

謝謝!哇。這確實是一個錯字的情況。不幸的是,VB創建新的變量並且不檢測拼寫錯誤! – CodeBlue

+2

@CodeBlue - 'Option Explicit'位於每個模塊或類的頂部。 – ken

1

我想這可能是你有選在窗體頂部明確沒有Option Explicit On

檢查的情況下(實際上無處不在)

你的錯誤類型聲明函數getDetials但隨後設置新創建的類名爲getDetails的對象實際上是創建一個新對象,並且根本沒有設置函數返回。

插入選項顯式,你會看到它不會編譯!

當你添加選項顯式處處得Tools>Options>Editor選項卡,勾選寫着Require variable declaration箱 - 這將確保它被添加每次添加一個新的代碼文件到您的項目時間。

相關問題