• 締切済み

「バリアント型でない変数に Null 値を代入しようとしました」と、ならないようにしたい

access フォームのテキストボックスにID(数字)を手入力し、 テーブルから情報を引き出すというのを作っています。 問題は、一度入力した数字を消した後(バックスペースキーやデリートキーや切り取り)、エンターキーを押すと 「バリアント型でない変数に Null 値を代入しようとしました」 と表示されてしまう点です。 業務上支障はありませんが、この表示を無くしたいのです。 このIDは常に5桁である必要がある為、 フォーム上では定型入力を”99999”としております。 テーブル上ではテキスト型としております。 どのようにすれば、解決できるでしょうか。

みんなの回答

noname#22222
noname#22222
回答No.4

3、そもそもエラーが発生する代入をスキップする。 Private Sub ID_AfterUpdate()   Dim lngID As Long      If Len(Me.ID & "") > 0 Then     lngID = Me.ID     MsgBox lngID   End If End Sub

noname#22222
noname#22222
回答No.3

1、単にエラーを表示させない。 2、変数代入時にエラーを発生させない。 Private Sub ID_AfterUpdate() On Error Resume Next   Dim lngID As Long      lngID = Me.ID   MsgBox lngID End Sub Private Sub ID_AfterUpdate()   Dim lngID As Long      lngID = Nz(Me.ID, 0)   If lngID <> 0 Then     MsgBox lngID   End If End Sub

PearlJam69
質問者

補足

皆様ご回答ありがとうございます。この場を借りて申し上げます。 しかし解決できませんでした。 皆さんがおっしゃるNz関数、If文は試しました。 しかし、それらのステートメントに至る前にエラーになっているようです。On Error Resume Nextに至る前のエラーのようです。 プロパティ→データ→既定値 で、既定値を”0”とすると例のエラー表示は無くなりましたが、 (当然ですが)IDを入力するテキストボックスはデフォルトで”0”が表示されます。 5桁での数字入力が必須の為、定型入力を”99999”とした所に起因しているように感じるのですが、どうにか解決できないでしょうか。

  • laputart
  • ベストアンサー率34% (288/843)
回答No.2

同じ状況をテストしました。 詳しい設定が分らないのですが、次のコードでは解決しませんか? フォームの上でテキストボックス名を仮に TX1 とすると フォーム→デザインで開く そのテキストボックスのプロパティを開く イベント→更新後処理をクリックして(イベントプロシージャ)にする その右横のボックスをクリック ----------------------------- Private Sub TX1_AfterUpdate() End Sub ----------------------------- と表示されるとおもうので、その間にエラー処理のコードを書きます ----------------------------- Private Sub TX1_AfterUpdate() If IsNull(TX1) Then TX1 = "99999" End If End Sub ----------------------------- この設定ではテキストが空になったとき、無理やり99999にすると いう処理ですが、他にも方法はあります。 保存して閉じてフォームを実行すると NULLになった時エラーメッセージが回避されていると思いますが? もし違っていたら教えてください。 それと大きなプログラムの場合、設定がよけい悪くなると行けないので データベースのコピーを使って試してみてください

PearlJam69
質問者

補足

皆様ご回答ありがとうございます。この場を借りて申し上げます。 しかし解決できませんでした。 皆さんがおっしゃるNz関数、If文は試しました。 しかし、それらのステートメントに至る前にエラーになっているようです。 プロパティ→データ→既定値 で、既定値を”0”とすると例のエラー表示は無くなりましたが、 (当然ですが)IDを入力するテキストボックスはデフォルトで”0”が表示されます。 5桁での数字入力が必須の為、定型入力を”99999”とした所に起因しているように感じるのですが、どうにか解決できないでしょうか。

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

> テーブルから情報を引き出すというのを作っています ここをどの様に作っているのか説明が無いと・・・ Nz 関数で括って、Nz(テイストボックス名," ") などとすれば良いかも?

関連するQ&A