プロが教える店舗&オフィスのセキュリティ対策術

アクセスのフォーム(テキストボックス)が、未入力の場合メッセージボックスを表示したいです。

【追加条件】
1.テーブルで”入力規則”、”エラーメッセージ”は使わない。
2.vbaは使わない。
3.マクロの”条件”のみで処理する。
----------------------------------------------------
vbaを使っての方法はあるみたいですが、マクロだけで入力判定をして、未入力の場合にメッセージボックスを表示する方法はないでしょうか?

A 回答 (3件)

条件が多いですね。

(^^;
でも、少し面倒ですが、可能だと思いますよ。

名前を下記の様に仮定します。

 フォーム名「フォーム1」
 テキストボックス名「テキスト1」「テキスト2」・・・
 マクロ名「マクロ1」

----以下手順-----------------------------------------------
フォーム1のイベント「更新前処理」にマクロ1を登録。

マクロ1の内容
 1行目
  条件:IsNull([Forms]![フォーム1]![テキスト1])
  アクション:メッセージボックス
 2行目
  条件:IsNull([Forms]![フォーム1]![テキスト1])
  アクション:イベントのキャンセル
 3行目
  条件:IsNull([Forms]![フォーム1]![テキスト1])
  アクション:マクロの中止

チェックするテキストボックスが1つの場合は上記で終わり。
複数ある場合は、同様の処理をテキストボックス分続けます。

 4行目
  条件:IsNull([Forms]![フォーム1]![テキスト2])
  アクション:メッセージボックス
 5行目
  条件:IsNull([Forms]![フォーム1]![テキスト2])
  アクション:イベントのキャンセル
 6行目
  条件:IsNull([Forms]![フォーム1]![テキスト2])
  アクション:マクロの中止

  ====以下同様====

----以上手順-----------------------------------------------

上記は、フォームの更新時にメッセージを表示します。

テキストボックスの更新時に、メッセージを表示したい場合は、
各テキストボックスの「更新前処理」にマクロを登録して下さい。

-----------------------------------------------------------
#補足
Accessの「マクロ」は、「VBA」ではありませんよ。>No1さん
ExcelやWordの「マクロ」とは違い、全く別の物です。

この回答への補足

未入力の場合はnullが発生しないみたいで、メッセージボックスがでません。
一度入力をして、取り消すとメッセージボックスがでます。
純粋に未入力の場合、メッセージボックスを表示する方法はないでしょうか?

補足日時:2008/01/02 16:14
    • good
    • 0

>未入力の場合はnullが発生しないみたいで、メッセージボックスがでません。


>一度入力をして、取り消すとメッセージボックスがでます。

確認してみました。少し内容を訂正します。

フォームの「更新前処理」には必ず、マクロ1を登録して下さい。
これで、内容を更新し保存する際、新規レコードを追加し保存する際に、
メッセージが表示されるはずです。

-----------------------------------------------------------
各テキストボックスの「更新前処理」のマクロですが、
マクロ1を流用出来ると思っていましたが、テキストボックスが複数あると
うまく行きませんでした。

テキストボックスにマクロを登録する場合は、
そのテキストボックスのみをチェックするマクロを、新たに作る必要があります。

-----------------------------------------------------------
更新せずに、レコードを移動するだけでは、メッセージは出ません。
つまり、既にNullで登録されているデータのチェックは出来ません。

レコードの移動前のイベントは有りませんので、
チェックするタイミングがありません。

これは、マクロのみでは、難しいかも・・・(^^;

既にNullで登録されているデータのチェックも行いたい、と言う
ご要望でしたら、もう少し方法を探ってみます。
    • good
    • 0
この回答へのお礼

ありがとうございました。

謝らなければいけないことがあります。
最初に回答いただいた分で、用件が足りておりました。

思い込みで、マクロを貼り付けるところを”フォーム”ではなく”コントロール”の方に張っておりました。
マクロを"フォーム"に変更すると、ちゃんと動きました。

私は、vbaのベーシックの文字を見ると、昔のベーシック言語を思い出します。
今のベーシックと違うとわかっていても、受け入れることができません。(けっ、ベーシックか・・って感じになります。)
一応、vbaを覚えようとしているのですが、上記のような理由からすぐにvba忘れてしまいます。
だから、すべてマクロでしようと考えております。

お礼日時:2008/01/02 19:05

私はマクロ=VBAだと思っていたので、ご質問の回答は「できません」になってしまいます。

    • good
    • 0
この回答へのお礼

ご意見ありがとうございます。

お礼日時:2008/01/02 16:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A