Access チェックボックスへのVBAの書き方

このQ&Aのポイント
  • AccessのチェックボックスにVBAを使ってアクセスする方法について説明します。
  • 画面を開くと特定の項目のみ表示され、チェックボックスにチェックを入れると他の項目が表示されるようになっています。
  • また、特定の条件でエラーメッセージを表示することもできます。
回答を見る
  • ベストアンサー

Access チェックボックスへのVBAの書き方

□がチェックボックス、各項目はframeで囲ってあります。 <項目1> A□ B□ C□ D□ <項目2> A□ B□ C□ D□ <項目3>=======fraEF:このフレームの名前 E□ F□ ●やりたいこと 1.画面を開けると<項目1>及び<項目2>のみ表示され、<項目3>は非表示(今のところこれはできています) 2.<項目1>及び<項目2>でCのチェックボックスにチェックをいれると<項目3>が表示され、EもしくはFに入力が必要(なんとなくできているのですが、も確実にしたい) ●現状プロシージャー <項目1><項目2>Cのプロシージャ-に Private Sub チェックXXXXX_GotFocus() fraEF.Visible = True End Sub とし、 それ以外は Private Sub チェックXXXXX_GotFocus() fraEF.Visible = False End Sub としています。 《改善したい点》 1.<項目1>でCにチェックをいれると、<項目3>のフレームとEFチェックはでる。しかし、<項目2>でチェックでA,B,Dを選ぶと、<項目3>とEFチェックが消えてしまう。<項目1>で選んだ場合は、残しておきたい。 2.<項目1><項目2>でCをチェックした場合は、EFのチェックを忘れないようにエラーを発生させたい。 上記説明でわかりますでしょうか? どうぞよろしくお願いいたします。 参考 ●自分の持っている本によると、このような作業をするには、プロシージャーを更新後処理へとありますが、チェックボックスのプロパティには、【フォーカス取得後、フォーカス喪失後、マウスボタンクリック時、マウスボタン移動時、マウスボタン解放時、キークリック時、キー解放時、キー入力時】しかありません。

  • Swim
  • お礼率79% (248/313)

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 フレームコントロールを使用しているのなら、処理を記述するのは、各チェックボックスではなく、 フレームコントロール自体のイベントです。 例えば、項目1の場合、項目1の各チェックボックスのプロパティの「オプション値」を見ると、1~4の整数が割り当てられています。 そして、フレームコントロールでオプショングループ化されていると、フレーム内の1つしかチェックを入れられません。 で、そのチェックが入っているチェックボックスのオプション値が、フレームコントロールのValueプロパティにセットされます。 項目2も同様です。 で、項目1と項目2のどちらかでCが選択されている場合に、項目3を表示させる場合は、 Private Sub fraKoumoku1_AfterUpdate()   If Me!fraKoumoku1.Value = 3 Or Me!fraKoumoku2.Value = 3 Then     Me!fraEF.Visible = True   Else     Me!fraEF.Visible = False   End If End Sub (両項目ともチェックボックス[C]のオプション値が3という仮定です。) これを、項目2のフレーム(fraKoumoku2)の更新後処理イベントにも記述して下さい。 各チェックボックスのイベントは一切記述しません。 あと、改善したい点の2ですが、 ・いつチェックしたいのか ・「エラーを発生」とは具体的にどのような動作をさせたいのか(MsgBoxを出す・・・etc) をはっきりさせて下さい。

Swim
質問者

補足

早速の回答ありがとうございました。 Frameにイベントを記述し、きちんとできました!!! 「いつチェックしたいのか」説明不足ですみません。Frameに記述して問題は、解決しました。 このフォームでは条件を入力後、最終的にボタンを押すと任意の画面が出てくる設定です。「エラーを発生」は、項目1、項目2で Cを選択したにもかかわらず、項目3で選択をしなかった場合、最終的にボタンをおしたとき「EまたはFをクリック選択してください」と出したいのです。 お時間ありましたら、また回答お願いいたします。

その他の回答 (1)

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

>「エラーを発生」は、項目1、項目2で Cを選択したにもかかわらず、 >項目3で選択をしなかった場合、最終的にボタンをおしたとき >「EまたはFをクリック選択してください」と出したいのです。 直接の回答ではないですが。 項目3のフレーム(fraEF)の既定値にどちらかのチェックボックスのオプション値(1か2)を設定してはどうでしょうか? それなら、フォームを開いた時に必ず設定した方のチェックボックスにチェックが入ります。 これなら、どちらにもチェックが入らないという状態は発生しませんが。

Swim
質問者

お礼

再度の回答ありがとうございます!エラー出すのはちょっと不安だったので、この方法は助かります。 またお世話になるかもしれませんがその時もよろしくお願いします。

関連するQ&A

  • チェックボックスのチェックによるマクロ処理の変更

    ユーザーフォームにチェックボックスとコマンドボタンを設置して、チェックボックスのチェックに応じて、処理を変えるにはどうしたらいいでしょうか。 具体的には、ユーザーフォームに例えば、 (1)チェックボックス  -りんご (=checkbox1)  -かき  -みかん  -もも (2)コマンドボタン  -春  -夏  -秋  -冬 のボタンがあるとします。 仮に、春のボタンには、 「Call 春」とプロシージャを読むようにしています。 春のプロシージャには、 例えば、 Sub 春()  If checkbox1=true then   range("A1").value="肥料"  End if End sub のように書いています。 チェックボックスのチェックの有無・結果に応じて、処理を変えたいのですが、これでは、checkbox1box1のチェックの結果がsubプロシージャに渡せないので、どのようにしたらいいのでしょうか。 よろしくお願い致します。

  • Access2010 SetFocusが当たらない

    Access2010です。 VBAにて、あるフォームの、デザイン上、「詳細」の中に存在しているテキストボックスにSetFocusでフォーカスを当てようと思ってます。 1 フォームロード時、フォームの「詳細」は非表示(当然、テキストボックスも非表示) 2 ボタンクリック時、フォームの「詳細」を表示し、テキストボックスにフォーカスを当てる という動作をしているのですが、2でテキストボックスにフォーカスがフォーカスが当たりません。どうしたらフォーカスが当たるのでしょうか? 以下、コードです。 Private Sub Form_Open(Cancel As Integer) Me.詳細.Visible = False End Sub Private Sub cmdボタン_Click() Me.詳細.Visible = True 'テキストボックスにフォーカスを当てる Me.txtテキスト.SetFocus End Sub よろしくお願いいたします。

  • Accessテキストボックスの未入力チェック

    いつも参考にさせて頂いております。 Accessテキストボックスの未入力チェックで上手くいかず悩んでいます。過去の情報等調べましたが、わかりませんでした。 どなたか宜しくお願い致します。 フォーム1にテキストボックス1、ボタン1があります。 テキストボックスを何も入力せず、Enter等で移動する時にチェックをかけたいです。 もし、テキストボックスに何も入力がなかったら、メッセージを出し、フォーカスをテキストボックスに戻す。 何か入力があれば、ボタンにフォーカスが移動する。 If IsNull(Me.テキストボックス1) = "" Then msgbox "未入力です。" Me.テキストボックス1.SetFocus End If 宜しくお願い致します。

  • AccessVBAのチェックボックスに関する質問です。

    AccessVBAの初心者です。 チェックボックスについての質問です。 掻い摘んで説明しますので判り辛いかもしれませんが、今構築しているデータベースの中のひとつに、チェックボックスのチェックが外れたときにメッセージボックスが出るようなvbOKCancelの組み込み関数を用いたプログラムを作っています。 そのキャンセルを選択した時に、クリックする前の状態に戻すようなプログラムが組みたいのですが、上手くできません。 要するに、チェックがついているままで、チェックボタンをクリックした事実も何事もなかったような状態まで戻したいです^^; 現在はPrivate Subで始まるプログラムなのでExit Sub でプロシージャから抜け出す前の状態に戻せないかと検討していました。 的外れな検討かどうかも含め、アドバイスをお願いいたします。

  • VBA のフォームでTxtボックスとコンボボックス

    エクセル2013で、やっとのことでマクロのフォーム(txt入力のみを5項目)を完成させることができました。 次に、そのうちの一つは曜日の入力なのでこれをコンボボックスにして、一覧を出してマウスで選択するように変更したいのですがどうもうまくいきません。マクロは初めてなので基本的な考え方ができていないのです。   そこで質問なのですが、参考書には  Private Sub UserForm_Initialize End Sub にマクロを記入するとなっていますが、これをもとの曜日入力ボックスと置き換えることはできないのでしょうか。それとも、終了ボタンのマクロと同じように、別のプロシージャにしないといけないのでしょうか。 それから、これはあまり重要ではないかもしれませんが、私がコンボボックスを作成するとマクロに Combbox_Changed のようなプロパティ(?)が表示されて、ヘルプを見てもよくわかりません。これはどういうことなのでしょうか。 よろしくお願いします。

  • チェックボックスのオンフォーカスについて

    チェックボックスにフォーカスが当たると、テキスト部にフォーカスが当たると思われるのですが、現開発ではチェックボックスのテキストプロパティには何も入力をしない仕様になってしまいました。 当然、Tab移動時等で該当するチェックボックスにフォーカスが当たってるのですが、外見ではフォーカス状態がわかりません。 フォーカスをテキスト部ではなく、チェックする部分にフォーカスを当てる方法はありませんでしょうか? どなたか、ご教授をお願いいたします。

  • チェックされたチェックボックスの数を調べるには?

    不定数のチェックボックスがあり、ボタンを押すとチェックされた項目の数を返すようにしたいのですが、どのように記述すれば良いでしょうか? 例えばチェックボックスが5個あり、そのうちの3個がチェックされている状態でボタンを押すと、アラートで3と表示する、といった感じです。

  • ACCESSのチェックボックスとコンボボックスの作り方

    1. テーブルを作って、そのテーブルからフォームを作るところまでいきました。フォームから入力する時に、いちいちタイプしなくていいようにチェックできるもの(例えば、男女からどちらか選ぶ)をつくりたいのですが、テーブルビューのルックアップから2つチェックボックスを作ることができません。やり方を教えてください。 2. コンボボックスを使って複数から選ぶようにすることはできたのですが、毎回マウスを使わないとできません。マウスを使わないでコンボボックスのアイテムを選ぶようにすることはできますか?

  • Accessのチェックボックス

    こんにちは。AccessのVBAについてお教えください。 下記URLに質問内容の画像を配置しました。 http://kie.nu/tli フォーム1にテキストボックス1というコントロールを配置しました。テキストボックス1に名簿IDの数値を入力して、ボタン1をクリックします。 もしチェックボックス1に既にチェックが入っていたらメッセージ「チェックが既に入っています。」といったメッセージを表示したいと思います。 そこで、ボタンを押した時に、 If フォーム1!サブフォーム1!チェックボックス1.Value = -1 Then msgbox "チェックが既に入っています。" end if とやりましたが、うまく動きません。どうやれば、うまく動くようになりますかご教授頂けませんでしょうか。よろしくお願いいたします。

  • エクセル VBA チェックボックスについて

    よろしくお願い致します。 OS:XP エクセル2003 VBAのことは、まったくの初心者です。 質問なのですが、下記のようなチェックボックス7にチェックが入れば、チェックボックス8~11に自由にチェックが入れれるようになり、逆にチャックボックス7にチェックが入ってない場合は、チェックボックス8~11のチェックはクリアされ、チェックできないものを作りました。 ここから、チェックボックス7にチェック入れたあとは、必ずチェックボックス9~11のどれかにチェックが入っている状態(ラジオボタンのような)で、チェックボックス7にチェックが入ってなかったら、8~11のチェックがクリアで尚且つ、チェックができなくなるようにするにはどうすればよいでしょうか? よろしくお願い致します。 Private Sub CheckBox7_Click() If CheckBox7.Value = True Then CheckBox8.Enabled = True CheckBox9.Enabled = True CheckBox10.Enabled = True CheckBox11.Enabled = True Else CheckBox8.Value = False CheckBox9.Value = False CheckBox10.Value = False CheckBox11.Value = False CheckBox8.Enabled = False CheckBox9.Enabled = False CheckBox10.Enabled = False CheckBox11.Enabled = False End If End Sub

専門家に質問してみよう