3

ディクショナリを返す VBA 関数があり、ディクショナリの作成中にエラーが発生した場合は、特定のアクションを実行します。そのようです:

Public Sub takeAction(s as string)

Dim dict as Dictionary
Set dict=makeADictionary(s)
If dictionaryIsOK(dict) Then
 doSomething
Else
 doSomethingElse
End If

End Sub

Null 値を示す方法としてdictionaryIsOKDictionary を設定しようとすると、この値をチェックできないように見えるため、関数の作成に問題があります。Nothing例えば:

Sub testNothing()

Dim d As New Dictionary

Set d = Nothing
Debug.Print d Is Nothing

End Sub

に設定しfalseても、これは印刷されます。これは、他のすべてのオブジェクト タイプにも当てはまるようです。dNothing

では、オブジェクト (この場合はディクショナリ) に割り当てることができる null 値と、そのブール値のチェックは何でしょうか?

4

2 に答える 2

4
Dim d As New Dictionary

VBA/VB6 では、上記は「d魔法のように常に のインスタンスを含む変数を宣言しますDictionary。変数を に設定した場合は、次に変数にアクセスするときにNothing新しいインスタンスを作成してください。」を意味します。Dictionary

削除したいNew:

Dim d As Dictionary

そして、変数Is Nothingかどうかを確認できます。

于 2013-03-15T17:23:07.353 に答える
1

正しくインスタンス化する必要があります。これは機能します:

Dim d As Dictionary
Set d = New Dictionary
Set d = Nothing
Debug.Print d Is Nothing
于 2013-03-15T17:27:26.947 に答える