こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

チェックボックスにチェックをいれることでセルに色をつけたい(エクセル)

行方向(例えばA2、B2、C2)に三つの項目「実施」「不十分」「未実施」を
置き、それぞれの項目の下の列方向に、表示→フォームからもってきたチェックボックスを入れます。
3つの項目のうち1つにしかチェックをいれない条件で
「不十分」にチェックをいれたときその横のD列のセルが黄色、「未実施」
にチェックをいれたときその横のD列のセルが赤色になるようにマクロを
組みたいのですが、いろんなサイトをみながらトライしても上手くいき
ません。
学習した上で質問すればいいのですがその場渡りの質問で申し訳ありません。よろしくお願いいたします。

投稿日時 - 2007-09-26 22:37:32

QNo.3379727

困ってます

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

まず グループボックス内で どれか1つを 選ばれたことにするので
消してはいけません 
>可視状態だといけないので
それでは 不可視にしましょう。

Sub del_line()
Selection.Visible = False
End Sub

このマクロを使うと 不可視になります。
VBAの画面で 挿入→標準モジュール として 貼り付けてください

不可視にしたいグループを選んで(選択状態で) ツールマクロ→マクロとして
del_line としてください

なお不可視にすると 可視状態にするのはめんどうなので(だって選択できないんだもん)
最後の最後にやって保存してからにしてくださいね。


さて次はマクロです。 (チェックボックスはめんどうなので使わずダブルクリックをつかいます)
A2からA21に設問を入れるとして 
B2に 実施 と文字をいれて 条件付書式をいれます。
数式が =E2=1 として 書式を青にします
B21までコピーします

C2に 不十分 と文字をいれて 条件付書式をいれます。
数式が =E2=2 として 書式を黄にします
C21まで コピーします

D2に 未実施 と文字をいれて 条件付書式をいれます。
数式が =E2=3 として 書式を赤にします
D21まで コピーします

E列は 文字の色を白にしておくか 列幅の幅を細くしてください。

後は B22に =COUNTIF(E2:E21,1) といれます これが 実施を選んだ個数
     C22に =COUNTIF(E2:E21,2) といれます これが 不十分を選んだ個数
  同様に D22に =COUNTIF(E2:E21,3) といれます これが 未実施を選んだ個数

あとは対象のシートの Worksheet_BeforeDoubleClick イベントをかくところに
下記をはりつけてください。

If ActiveCell.Row > 1 And ActiveCell.Row < 22 Then ' 2行目から 21行目か?
If ActiveCell.Column = 2 Then ' B列か?
Cells(ActiveCell.Row, 5) = 1
ElseIf ActiveCell.Column = 3 Then ' C列か?
Cells(ActiveCell.Row, 5) = 2
ElseIf ActiveCell.Column = 4 Then ' D列か?
Cells(ActiveCell.Row, 5) = 3
Else ' それ以外か?
Cells(ActiveCell.Row, 5) = 0
End If
Cancel = True
End If

以上でおわりです 実施 不十分 未実施を ダブルクリックすると
色がかわります 他のところをダブルクリックすると 消えます

投稿日時 - 2007-09-28 22:22:44

お礼

おはようございます。グループボックスを不可視にすることが
できました。いろんなことに応用できそうです。
マクロは便利と改めて思いますし、勉強しなきゃと痛感しています。
本当にありがとうございました。

投稿日時 - 2007-09-29 08:44:03

ANo.3

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

なーんか セキュリティチェックシートみたいだなぁ

さてチェックボックスよりラジオボタン(オプションボタン)の方がいいと思うんですが
まず A列は 質問を書く事にして B列は 答えの表示をするとします。

1)表示→ツールバー→フォームとして グループボックス(XYZって書いてあるやつ)を選びます。
それを シートにドラッグします(ちょっと大きめにね)
2)オプションボタンをえらんで先ほどの グループボックスにきちんと入るようにいれ
  オプションってなっている所を 実施とします
3)同様に オプションボタンをえらんで先ほどの 実施の横において(グループボックスにきちんと入るようにいれてね)
  オプションってなっている所を 不十分とします  同様に未実施も作ります。(必ずグループボックスに入るように)

4)クループボックスとオプションボタンをすべて選択し 必要な数だけコピーしてきれいに並べます。(ちょっと大変だけど)

5)上から順番に 実施のオプションボタンを右クリックして コントロールの書式設定をえらび
 コントロールのタブの リンクするセルのところに C2 と入れます

6)次の 実施のオプションボタンを右クリックして 同様に C3 といれます。後はこの繰り返し

7)B2には 式をいれます =IF(C2=1,"実施",if(C2=2,"不十分",if(c2=3,"未実施","")))
B2に 条件付書式をいれます ”数式が” をえらんで 式に =c2=1 として 好きな色とか選びます。
条件の追加として  ”数式が” をえらんで 式に =c2=2 として 好きな色とか選びます。
条件の追加として  ”数式が” をえらんで 式に =c2=3 として 好きな色とか選びます。

8)B2をコピーして B3からB21まで貼り付けます。(20問として)

9)後は B22に =COUNTIF(C2:C21,1) といれます これが 実施を選んだ個数
     B23に =COUNTIF(C2:C21,2) といれます これが 不十分を選んだ個数
  同様に B24に =COUNTIF(C2:C21,3) といれます これが 未実施を選んだ個数
です


VBAを使わないで出来る方法をかきましたが VBAが使えるなら簡単な方法もあるんで ゆうてください。

投稿日時 - 2007-09-27 00:33:52

お礼

遅くなり申し訳ありません。ご回答ありがとうございました。
教えていただいた方法を応用して上手くいきそうなのですが、グループ
ボックスが可視状態だといけないので、ボックスを右クリック⇒切り取り
していくと、3つのボタンで1グループなのに、3つから6つ9つ(あとは
3の倍数)・・・・というふうに全部が1グループになっていきます(泣)。
これを解消できないでしょうか(回答は無理しないで)。
丁寧な回答を頂きながらすみません。でもわからなかったら
いいです(すみません)。
VBAが使えるならお聞きしたいとこですが、このグループの広がりを
解消したいです。

投稿日時 - 2007-09-28 19:20:11

ANo.1

>マクロを組みたいのですが
マクロでは並みのVBA力では、難しいと思います。
元に戻すなどが難しいのでは。
すなわち条件付書式を使わないと、即反応的に、色を反映させるのは難しいと思う。VBAで色を変化させることを組むことが念頭にありますが。
条件付書式をVBAでやるのは、難しくないが、それとは別。
ーー
しかし条件付書式は
(1)「セル」の
(2)セルの「値」を
条件として、反応するものです。
ーー
一方チェックボックスの値はそれだけでは、「セルの値」になりません。
LinkedCell(編集モードで右クリックしてプロパティを見てください)など指定して初めてセルの値(TRUEかFALSE)になります。
ですから3つのチェックボックスを3つのセルの値に転化し、そのセルの値を使って、多分「数式が」のボックスに適当な式を入れましょう。

投稿日時 - 2007-09-26 23:34:42

お礼

遅くなりました。ご回答ありがとうございます。いまだ表作成をしております。
条件付書式はうまくいきますが、グループのボタンがうまくいきません。
もうちょっと考えながらがんばってみます。どうもありがとうございました。

投稿日時 - 2007-09-28 19:08:31

あなたにオススメの質問