2011-09-15 4 views
2

私のプログラムは、この文を過ぎて処理しません:アクセス2007 VBAのヌル

Dim valid as Boolean 
If MyComboBox.Value Is Not Null Then valid = true 

なぜいけないのでしょうか?

停止点を使用して手順を実行しようとすると、プログラムは次の手順に進みませんが、vbaコードが実行されていないかのようにフォームが実行され続けます。これは、何も間違っていても意図した動作が起こっていないかのようにフォームを使用できることを意味するため、迷惑です。

+1

をStackOverflowのへようこそ。あなたはそれが何をすると思いますか? 'Valid'は、悪いテストが1つの条件を満たす場合にのみセットする'ブール '変数であり、投稿したコードの後に​​' Valid'で何もしません。 (より良いテストは 'If MyComboBox.Text <>" "または' Valid = MyComboBox.Text <> "" 'のようなものになり、' 'Valid''が真か偽かによって何かを行います) –

+0

Testing AccessのMyComboBox.Textは、コントロールにフォーカスがあるときにのみ動作します。コントロールがNullであるかどうかをチェックするのが最適な解決法です(If IsNull(Me!MyComboBox)))、バインドされたデータフィールドがゼロ長文字列を許可しないと仮定します。アクセステーブルデザイナー、残念ながら)。 –

答えて

4

ISキーワードは、オブジェクトの状態をテストするために使用され、値をテストしたいと考えています。以下では正常に動作します:

Dim Valid as Boolean 

If Not IsNull(MyComboBox.Value) Then Valid = True 

は、より詳細な説明については、以下のリンクを参照してください。

Nothing? Empty? Missing? Null?

+0

リンクありがとうございます。とても有益でした。あなたの答えは私が必要とした解決策を提供しました。 – crushbrain

+2

または、より単純に、 'Valid =(Not IsNull(Me!MyComboBox))'です。 –

0

Null AFAIKはオブジェクトのテストにのみ使用でき、valueプロパティはオブジェクトではないため、少なくともExcelではこの方法を使用すると、エラーが発生します。あなたが有効に設定したい場合はコンボボックスで選択された少なくとも1つの値があるとき

はそのため... = TRUEは、私はそれが役に立てば幸い私は

valid = CBool(Len(MyCombobox.Value))

を使用したいと考えている...と

+0

Nullは、オブジェクトではなくバリアントの可能な値です。 – phoog

関連する問題