[[20140609162235]] 『チェックボックスの入力チェック』(ミコ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『チェックボックスの入力チェック』(ミコ)

 シート1のA列にチェックボックスが2つ、C列にチェックボックスが4つあります。

    A     B    C    D
 1 □いちご     □あまおう 
 2                    □とちおとめ
 3
 4 □りんご     □ふじ
 5                    □ジョナゴールド
 6

 A列のいちごにチェックが入っている時には、C列のあまおうとちおとめのどちらかに
 チェックが入っていなければいけない。
 A列のりんごにチェックが入っている時には、C列のふじとジョナゴールドのどちらかに
 チェックが入っていなければいけない。
 (いちごにもりんごにもチェックが入っていない時はスルー)

 以上の条件のチェックをブックを閉じる時に行い、チェック漏れがあったら
 「あまおうか、とちおとめのどちらかにチェックを入れてください」などの
 メッセージを出すようにして、チェック漏れが解決できるまでブックが閉じられない
 ような仕様にしたいのですが、どのようなマクロになりますか?

           

< 使用 Excel:Excel2010、使用 OS:WindowsXP >


sheet1にCheckBox1〜CheckBox3のオブジェクトを用意し、
下記イベントをthisworkbookに記述する。

sheet1のオブジェクト

CheckBox1のcaptionに「イチゴ」
CheckBox2のcaptionに「あまおう」
CheckBox3のcaptionに「とちおとめ」

と入力しておきます。

'エクセルファイル終了時イベント処理
Private Sub Workbook_BeforeClose(Cancel As Boolean)

    If Worksheets("Sheet1").CheckBox1.Value = True Then

        If Worksheets("Sheet1").CheckBox2.Value = False And Worksheets("Sheet1").CheckBox3.Value = False Then

            MsgBox Worksheets("Sheet1").CheckBox2.Caption & "又は" & Worksheets("Sheet1").CheckBox3.Caption & "にチェックを入れてください。"

            cansel = False

        Else

            ThisWorkbook.Close

        End If

    Else

        MsgBox "入力がありません。"

    End If

End Sub

分岐がわかるようにメッセージを入れておきました。
不要な動作は削除してください。

以上
(K) 2014/06/09(月) 17:18


'エクセルファイル終了時の処理
Private Sub Workbook_BeforeClose(Cancel As Boolean)

    If Worksheets("Sheet1").CheckBox1.Value = True Then

        If Worksheets("Sheet1").CheckBox2.Value = False And Worksheets("Sheet1").CheckBox3.Value = False Then

            MsgBox Worksheets("Sheet1").CheckBox2.Caption & "又は" & Worksheets("Sheet1").CheckBox3.Caption & "にチェックを入れてください。"

            Cancel = True

        Else

            ThisWorkbook.Close

        End If

    Else

        MsgBox "入力がありません。"

    End If

End Sub

※動作確認が不十分でした。申し訳ない。
スペルミス等を修正しました。
(K) 2014/06/09(月) 17:24


 シートに貼り付けるチェックボックスコントロールは、

 開発タブの挿入をクリックすればわかると思いますが、
 「フォームコントロール」と「ActiveXControl」の2種類があります。

 種類によって、コードの書き方が違ってきます。 その辺りをはっきり記述してください。

 又、
 > A列のいちごにチェックが入っている時には、C列のあまおうとちおとめのどちらかに
 >チェックが入っていなければいけない。

 これは、どちらか一つだけ選択できるという意味ですか? それとも両方同時の選択も可能という事ですか?
 これもはっきり記述してください。

 それによって、チェックも違ってきますから・・・。

(ichinose) 2014/06/10(火) 09:19


 ミコです。

 お返事が遅くなってしまい申し訳ありません。
 ichinoseさんの仰るとおり、フォームコントロールのチェックボックスでした…

 Kさんのコードの”CheckBox1”の部分を、リンクするセルに置き換えてみたら
 問題なく動作しましたので、これで使わせていただきたいと思います。

 選択できる数については、両方同時の選択も可能というつもりでしたので
 このままで大丈夫そうです。

 次に質問する際には、その辺りのことも考慮して質問したいと思います。
 Kさん、ichinoseさん、ありがとうございました。

(ミコ) 2014/06/13(金) 12:11


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.