0

Form1というフォームがあります。Form1には、次のコードがあります-

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のdetails変数が設定されません。これを修正する方法は?

4

2 に答える 2

4

Option Explicitキーワードを定義しましたか?

タイプミスがあるようです。関数はと呼ばれgetDetialsますが、結果を設定する変数はgetDetailsであるため、戻り値は設定されません。

タイプミスを修正しましたが、すべてが期待どおりに機能します。Option Explicitキーワードを使用すると、これらのタイプのエラーが検出されます。

于 2012-05-23T15:29:09.480 に答える
1

これは、 OptionExplicitOnがない場合の可能性があると思います

フォームの上部(実際にはどこでも)にOptionExplicitがあることを確認してください

関数を宣言するタイプの間違いですgetDetialsが、新しく作成されたクラスに呼び出されるオブジェクトを設定するとgetDetails、実際には新しいオブジェクトが作成され、関数の戻り値はまったく設定されません。

Option Explicitを挿入すると、コンパイルされないことがわかります。

Option Explicitをどこにでも追加したら、Tools>>タブに移動し、「-」というボックスにチェックマークをOptions付けます。これにより、プロジェクトに新しいコードファイルを追加するたびに追加されます。EditorRequire variable declaration

于 2012-05-23T15:31:07.800 に答える