• ベストアンサー

アクセスについて

(アクセスでSQL文の抽出条件を選択するフォームを作成しました。) フォームには6個のチェックボックスがあり、必ずどれか選択しなければなりません。 フォームの右上の×ボタンを押した時、何もチェックされていなかったら、メッセージを表示して、フォームを閉じるのを中止したいのですが、うまくできません。 どなたか、ご教授お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • aptiva
  • ベストアンサー率36% (193/529)
回答No.3

FormのUnloadイベントで制御できませんか? Private Sub Form_Unload(Cancel As Integer) If フォームを閉じて良い条件 = False Then   Msgbox("条件を選択してください")   Cancel = True ' 条件が成り立たないときはUnloadイベントをキャンセルする End If End Sub

makitty
質問者

お礼

どうもありがとうございます。 Unloadイベントで制御することができました!!

その他の回答 (2)

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

×ボタンを押した時にチェックボックスの状態を確認してメッセージを表示する事も出来ます。その場合はイベントはフォームを閉じる時になりますので 例え表示が出てもそのフォームが閉じてしまいます。 よって再びフォームを開くコマンドを追加する事に なります。しかしフォームの設定は初期化されてしまします。 何か手があるかもわかりません。(考え中)

makitty
質問者

お礼

すばやい回答をどうもありがとうございました。

makitty
質問者

補足

そうなんです。それで、どうしたらよいものかと思いまして。

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

(1)まずフォームのプロパティでチェックボックスの規定値をYes あるいは No に設定します。これは 値がNullになるのを防止するためです。 (2)次にフォームのプロパティで「閉じる」ボタンを 「いいえ」にします。これで閉じるボタンを使用できないようにします。 (3)閉じる為のコマンドボックスを設置します。 これをクリックしたときに以下のモジュールを 記帳します。 この場合閉じるボタンの名前をコマンド1 チェックボックスの名前を Ck1, Ck2 ..... Ck6 までとしていますが名前を変える必要があります。 Ck1からCk6までの全てが空白の場合は値が0となりますのでその場合はメッセージを出して閉じない、それ以外は閉じるという設定です。 nameform = "フォームの名前"を入れてください。 ---------ここから---------------------------- Private Sub コマンド1_Click() 'チェックボックスの判定 If Me!CK1 + Me!CK2 + Me!CK3 + Me!CK4 + Me!CK5 + Me!CK6 = 0 Then MsgBox ("選択されていません。") Exit Sub End If 'フォームを閉じる nameform = "フォームの名前" DoCmd.Close acForm, nameform End Sub

makitty
質問者

お礼

早速の回答どうもありがとうございます。 コマンドボックスを設置するとのことですが、コマンドボックスを設置しないで、右上の×ボタンだけで閉じること(処理をすること)はできないのでしょうか??

関連するQ&A