- ベストアンサー
アクセスについて
(アクセスでSQL文の抽出条件を選択するフォームを作成しました。) フォームには6個のチェックボックスがあり、必ずどれか選択しなければなりません。 フォームの右上の×ボタンを押した時、何もチェックされていなかったら、メッセージを表示して、フォームを閉じるのを中止したいのですが、うまくできません。 どなたか、ご教授お願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
FormのUnloadイベントで制御できませんか? Private Sub Form_Unload(Cancel As Integer) If フォームを閉じて良い条件 = False Then Msgbox("条件を選択してください") Cancel = True ' 条件が成り立たないときはUnloadイベントをキャンセルする End If End Sub
その他の回答 (2)
- laputart
- ベストアンサー率34% (288/843)
×ボタンを押した時にチェックボックスの状態を確認してメッセージを表示する事も出来ます。その場合はイベントはフォームを閉じる時になりますので 例え表示が出てもそのフォームが閉じてしまいます。 よって再びフォームを開くコマンドを追加する事に なります。しかしフォームの設定は初期化されてしまします。 何か手があるかもわかりません。(考え中)
お礼
すばやい回答をどうもありがとうございました。
補足
そうなんです。それで、どうしたらよいものかと思いまして。
- laputart
- ベストアンサー率34% (288/843)
(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
お礼
早速の回答どうもありがとうございます。 コマンドボックスを設置するとのことですが、コマンドボックスを設置しないで、右上の×ボタンだけで閉じること(処理をすること)はできないのでしょうか??
お礼
どうもありがとうございます。 Unloadイベントで制御することができました!!