5

Access でいくつかの VBA コードを操作すると、非常に特定の条件セットが満たされると、整数を求める入力ボックスがポップアップ表示されます。ここまでは順調ですね。

Private Sub Command10_Click()

    If Not IsNull(mrf) Then
        If min <> max Then
            If qty <= min Then
                mrf = GetParamValue
            End If
        End If
    End If
    End Sub

問題は、Not IsNull が無視されているように見えることです。値が既に存在しない限り、値を入力するように求めたいと思います。min <> max および qty <= min の条件が満たされている限り、これは InputBox を起動し続けます。ここで何が欠けていますか?

4

4 に答える 4

11

mrfが Variant の場合、最初はEmptyであり、 ではありませんNull。したがって、IsEmpty()関数を使用する必要があります。

于 2009-03-31T19:28:11.890 に答える
4

いいえ、Not IsNullは完全に機能しています。

IsNullは、渡されたパラメーターが null の場合に TRUE を返し、それ以外の場合は false を返す関数であることを思い出してください。

「If Not IsNull(mrf) Then」ステートメントは、「If mrf is not null then」として英語に変換されます

これが意味することは、mrf に値がある場合、if ステートメント内でコードを処理していることです。mrf が null のときに内部コードを起動する場合は、ステートメントからNOTを削除する必要があります。

于 2009-03-31T19:23:45.660 に答える
1

私の推測では、mrf が空であっても、それ以外であっても、null ではありません。また、VBA ランドの null とは異なる Nothing の場合もあります (と思います)。デバッガーでコードを実行して、mrf の値を調べてみてください。mrfが何であるかに応じて、別のテストを実行できます(len(mrf)をチェックするか、isNothing(mrf)をチェックしないか、または整数であり、ゼロに初期化されている場合、mrf <> 0 ....あなたはアイデアを得るお役に立てば幸いです。

于 2009-03-31T19:27:00.050 に答える
1

VB6/VBA null/nothing/empty に関するこの記事に興味があるかもしれません:

http://blogs.msdn.com/ericlippert/archive/2003/09/30/53120.aspx

于 2009-03-31T20:18:02.300 に答える