- 締切済み
「バリアント型でない変数に Null 値を代入しようとしました」と、ならないようにしたい
access フォームのテキストボックスにID(数字)を手入力し、 テーブルから情報を引き出すというのを作っています。 問題は、一度入力した数字を消した後(バックスペースキーやデリートキーや切り取り)、エンターキーを押すと 「バリアント型でない変数に Null 値を代入しようとしました」 と表示されてしまう点です。 業務上支障はありませんが、この表示を無くしたいのです。 このIDは常に5桁である必要がある為、 フォーム上では定型入力を”99999”としております。 テーブル上ではテキスト型としております。 どのようにすれば、解決できるでしょうか。
- みんなの回答 (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
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
- laputart
- ベストアンサー率34% (288/843)
同じ状況をテストしました。 詳しい設定が分らないのですが、次のコードでは解決しませんか? フォームの上でテキストボックス名を仮に TX1 とすると フォーム→デザインで開く そのテキストボックスのプロパティを開く イベント→更新後処理をクリックして(イベントプロシージャ)にする その右横のボックスをクリック ----------------------------- Private Sub TX1_AfterUpdate() End Sub ----------------------------- と表示されるとおもうので、その間にエラー処理のコードを書きます ----------------------------- Private Sub TX1_AfterUpdate() If IsNull(TX1) Then TX1 = "99999" End If End Sub ----------------------------- この設定ではテキストが空になったとき、無理やり99999にすると いう処理ですが、他にも方法はあります。 保存して閉じてフォームを実行すると NULLになった時エラーメッセージが回避されていると思いますが? もし違っていたら教えてください。 それと大きなプログラムの場合、設定がよけい悪くなると行けないので データベースのコピーを使って試してみてください
補足
皆様ご回答ありがとうございます。この場を借りて申し上げます。 しかし解決できませんでした。 皆さんがおっしゃるNz関数、If文は試しました。 しかし、それらのステートメントに至る前にエラーになっているようです。 プロパティ→データ→既定値 で、既定値を”0”とすると例のエラー表示は無くなりましたが、 (当然ですが)IDを入力するテキストボックスはデフォルトで”0”が表示されます。 5桁での数字入力が必須の為、定型入力を”99999”とした所に起因しているように感じるのですが、どうにか解決できないでしょうか。
- nicotinism
- ベストアンサー率70% (1019/1452)
> テーブルから情報を引き出すというのを作っています ここをどの様に作っているのか説明が無いと・・・ Nz 関数で括って、Nz(テイストボックス名," ") などとすれば良いかも?
補足
皆様ご回答ありがとうございます。この場を借りて申し上げます。 しかし解決できませんでした。 皆さんがおっしゃるNz関数、If文は試しました。 しかし、それらのステートメントに至る前にエラーになっているようです。On Error Resume Nextに至る前のエラーのようです。 プロパティ→データ→既定値 で、既定値を”0”とすると例のエラー表示は無くなりましたが、 (当然ですが)IDを入力するテキストボックスはデフォルトで”0”が表示されます。 5桁での数字入力が必須の為、定型入力を”99999”とした所に起因しているように感じるのですが、どうにか解決できないでしょうか。