
Excel2003の質問です、宜しくお願いします。
一つのセルの中で 「□良い □悪い」という回答にチェックを入れて貰うような
フォームみたいなものを設定したいのですが、どのようにしたら良いのでしょうか。
Wordなら、ツールバーのフォームから設定できそうなのですが、Excelの一つのセル
の中に二つ以上のチェックボックスの設定の仕方が分かりません。
また、二個以上のチェックをつけるとセルの色が赤になるとか、何もつけない
(シートを開いた状態)と緑になるとかにしたいのですが、どのようにしたら良いのか、
さっぱり分かりません。
宜しくお願いします。
No.2ベストアンサー
- 回答日時:
表示→ツールバー→フォームにチェックを入れるとフォームツールバーが出てくると思いますので、チェエクボックスを選んで任意のセルに二つ作ったら如何ですか?
また、チェックボックスは他セルとリンクさせてチェックが入っているとTrue、入ってないとFalseとする事ができますので、リンクセルの状態を条件に条件付書式を設定すれば色付けもできるかと思います。
チェックボックスを右クリック→コントロールの書式設定→コントロールタブ
リンクさせるセルにお好きなセルを設定。
これを二つそれぞれ別セルにリンク。
チェックボックスを入れているセルに条件付書式で色付け(リンクセルが両方ともTrueとかどちらもFalseとか)
でも択一の設問ならオプションボタンの方がいいかと思います。
(白丸の中に選択すると黒丸が入るもの)
オプションボタンを使用する場合は、設問がいくつかある場合はグループボックスで設問ごとに囲んでください。
囲んだ中で一つだけが選択されるようになります。
こちらはリンクすると「1,2・・・」と数値で返ります。
No.10
- 回答日時:
「□良い □悪い」でここまでしないといけないのか?。
良悪でなくても、この(対関係)分類でチェックで2つ並べるのはおかしい。
ラジオボタンでないのか?。
前述べたように、 「□良い」 のOFFで 「□悪い」 のON、その逆だし、
両方押すことないし、押されないことはある。
これらを連動させるのか?。
それもおかしい。
No.9
- 回答日時:
マクロ自体の問題ではありませんが、コメントが前のままでした。
>.CheckBoxes("CB" & j).Value = xlOff Then '1個
↓
.CheckBoxes("CB" & j).Value = xlOff Then '0個
です。
もし、お使いのようなら、ここらは、また要相談ですね。VBAでも構わないならですが。
No.8
- 回答日時:
私の#6のマクロについて、ご指摘があったようですが、オブジェクトとセルの位置関係は連動し、設定にはある程度、正確さが必要だというだけです。
今度は、新たにチェックボックスを取り付ける場合、設定まで自動的に行うマクロを披露します。セルに機械的に納まります。数が数百でも、1秒程度で出来ます。*Range("B1:B30") 'チェックボックスの範囲
*Const EA '何行おきか?(n -1 )行置き
'//標準モジュール
Private Const EA As Integer = 2 '*
Sub AddFormCheckBoxes()
'チェックボックスの設定マクロ
Dim rng As Range
Dim i As Long, j As Long
Dim aSh As Worksheet
If EA = 0 Then Exit Sub
Set aSh = ActiveSheet
Set rng = aSh.Range("B2:B30") '*
rng.EntireColumn.ColumnWidth = 16
With rng
j = 1
For i = 1 To .Rows.Count Step EA
With .Cells(i, 1)
'左側のチェックボックス
With aSh.CheckBoxes.Add(.Left + 5, .Top + 1, .Width / 3, .Height / 8)
.Name = "CB" & j
.Caption = "良い"
.OnAction = "CheckBoxes_Click"
j = j + 1
End With
'右側のチェックボックス
With aSh.CheckBoxes.Add(.Left + 50, .Top + 1, .Width / 3, .Height / 8)
.Name = "CB" & j
.Caption = "悪い"
.OnAction = "CheckBoxes_Click"
j = j + 1
End With
End With
Next i
End With
Set aSh = Nothing
Set rng = Nothing
End Sub
Private Sub CheckBoxes_Click()
'CheckBoxのマクロ
Dim n As String
Dim myCell As Range
Dim i As Long, j As Long, k As Long, m As Long
With ActiveSheet
m = .CheckBoxes(1).TopLeftCell.Row
n = Application.Caller
i = Replace(n, "CB", "", , , 1)
If i Mod 2 = 0 Then
j = i - 1
k = j
Else
j = i + 1
k = i
End If
Set myCell = .Cells(Int((k - 1) / 2) * EA + m, 2)
If .CheckBoxes("CB" & i).Value = xlOn And _
.CheckBoxes("CB" & j).Value = xlOn Then
myCell.Interior.ColorIndex = 38 '赤
ElseIf .CheckBoxes("CB" & i).Value = xlOff And _
.CheckBoxes("CB" & j).Value = xlOff Then '1個
myCell.Interior.ColorIndex = 35 '緑
Else
myCell.Interior.ColorIndex = xlNone '色なし
End If
End With
Set myCell = Nothing
End Sub
'おまけ
Sub ClearCheckBoxes()
'チェックボックスの削除
Dim cb As Object
Application.ScreenUpdating = False
For Each cb In ActiveSheet.CheckBoxes
cb.TopLeftCell.ClearFormats
cb.Delete
Next cb
Application.ScreenUpdating = True
End Sub

No.7
- 回答日時:
えと、フォームでのチェックボックスやオプションボタンですが、基本的にオブジェクトなので配置するセルの位置などには左右されません。
セルの境目に置こうが機能は変化しません。
見た目の問題でセルの中に置きたいのかと思いますので、そこはセルを大きくして二つ並べればいいと思いますが、その色を変えたいセルとチェックボックスの位置は直接は関連しません。(そのセルの中にチェエクボックスがないと駄目なわけではない。)
例えば、チェエクボックスをA5セルに配置していても、A1セルの色を変えたりする事ができます。
チェックボックス1のリンクセル→C1
チェックボックス2のリンクセル→C2
とした場合A1に条件付書式の数式で「=AND($C$1=TRUE,$C$2=TRUE)」→お好きな色
と設定すればA5にあるチェックボックスが二つともチェックが入ればA1が赤になります。
個人的には、扱いやすいフォームツールが好きなので力説してしまいました。
No.6
- 回答日時:
コントロールツールもフォームツールも同じですが、コントロールツール側のほうが、少し難しいと思います。
確かに、名前を、CheckBox1 とか分かっていればよいのですが、基本的には、CheckBox の数だけマクロが必要になってしまいます。そういう点で、フォームツール側のCheckBox のほうが楽です。VBAでも、どうやって色を付けるか、その先まで考えていないと話が進められませんね。標準モジュールに、二つを貼りつけて、SetInActonで、マクロを関連付けてください。
色については、気に入らなかったらヘルプなどを見ながら、調整してください。
2個以上と書かれていますが、現在は横並びの2個までです。
Private Sub CheckBoxes_Click()
Dim n As String
Dim chkb As Object
Dim cb As Object
Dim i As Integer
n = Application.Caller
i = 0 'カウントのクリア
Set chkb = ActiveSheet.CheckBoxes(n)
If chkb.Value = xlOn Then i = 1 '1個目
For Each cb In ActiveSheet.CheckBoxes
If chkb.Name <> cb.Name Then
If Not Intersect(cb.TopLeftCell, chkb.TopLeftCell) Is Nothing Then
If cb.Value = xlOn Then i = i + 1 '加算
Exit For
End If
End If
Next cb
If i > 1 Then '2個以上
chkb.TopLeftCell.Interior.ColorIndex = 3 '赤
ElseIf i = 1 Then '1個
chkb.TopLeftCell.Interior.ColorIndex = xlNone '色なし
Else
chkb.TopLeftCell.Interior.ColorIndex = 10 '緑
End If
End Sub
'チェックボックスにマクロを関連付けさせる
Sub SetInActon()
Dim cb As Object
For Each cb In ActiveSheet.CheckBoxes
cb.OnAction = "CheckBoxes_Click"
Next cb
End Sub
*フォームツールのCheckBox の取り付けの注意点
クリックしたりすると、CheckBox の点線の領域線が現れるかと思います。その領域線の左上端が、その色を変更するセルの中にないといけません。
端
↓
+………+ +………
| □ | | □
+………+ +………

No.5
- 回答日時:
良い、悪い、何もつけない、の3択か。
対義語なら1つチェック入れるか入れないか。
「良い」から「悪い」にしたいとき
「良いON」→「良いOFF」で、
さらに「悪いON」にしないと「悪い」にならないのはうっとおしい。
「良い」も「悪い」もONにできるが、その制御はどうする?。
事例だから「良い、悪い」にしただけ、ならいいが・・・。
No.4
- 回答日時:
If CheckBox1.Value = True And checkbox2.Value = True Then
のように 条件分岐をします
♯3氏が指摘されている フォームのチェックボックスは使ったことが無いのでよくわかりません
ほとんど ユーザーフォーム のほうのチェックボックスか シートのコントロールチェックボックスしか
使っていないので・・。
No.3
- 回答日時:
Excelのチェックボックスには、ANo.1の方が説明しているコントロールボックスのチェックボックスと、ANo.2の方が説明しているフォームのチェックボックスの2種類があります。
フォームの方が古い機能なので、どちらかといえばコントロールボックスの方が主流です。
しかし、今回のようにチェックボックスが乗っているセルの色を変えたいならフォームの方がお勧め。
コントロールボックスの方は、背景色を透明(プロパティでBackStyle=0)に設定してセルの色をそのまま見せようとしても、チェックボックスをクリックするとなぜか背景色が不透明になります(おそらくExcelのバグ)。

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルについて教えてください。 2 2023/06/14 11:11
- Excel(エクセル) たくさんあるフォームコントロールを効率よく確認するには 1 2022/12/24 12:27
- Excel(エクセル) エクセル バーコード作成で他のシートを参照するには? 2 2023/05/03 16:57
- Excel(エクセル) 複数シートのデータ統合とレイアウトの維持についてです 2 2022/10/18 21:11
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- Excel(エクセル) Excelについて▶あるセルに文字を入力すると、別のセルに色がつく(条件付き書式) 1 2022/03/27 16:43
- Visual Basic(VBA) エクセルのメモについて教えてください。 1 2022/06/23 11:32
- Excel(エクセル) コントロールにリンクするセルが選択されない 3 2022/06/12 14:37
- Excel(エクセル) エクセルのフッタやヘッダーについて 3 2023/02/04 09:45
このQ&Aを見た人はこんなQ&Aも見ています
-
セルの中にもっとも簡単にチェックボックスを置く方法は?
Excel(エクセル)
-
2つ以上のチェックボックスを連動させるには?
Excel(エクセル)
-
複数のチェックボックスを同時にチェックする
その他(ビジネス・キャリア)
-
-
4
SPREADで1つのセルに複数のチェックボックスを表示させたい
Visual Basic(VBA)
-
5
エクセルのチェックボックスで3つあるうち1つチェック入れたら自動的に残りにチェック出来ないようにするには
Excel(エクセル)
-
6
EXCELで特定のセルに表示された項目をヘッダーやフッターに出力するには
Excel(エクセル)
-
7
あるセルに特定の文字列を打つと、他のセルに決められた文字が自動入力するように
Excel(エクセル)
-
8
EXCELで2つの数値のうち大きい方を採択する数式
Excel(エクセル)
-
9
エクセル 複数のチェックボックスをリンクさせる
Excel(エクセル)
-
10
有無、要否、賛否、是非、可否、当否…これらの言葉について
その他(教育・科学・学問)
-
11
Excelのセルにユーザー名を表示する方法
Excel(エクセル)
-
12
チェックボックスの値をTRUE/FALSE以外にするには?
Excel(エクセル)
-
13
outlook 文字を揃えたい。tabでやっても揃わない。
Word(ワード)
-
14
ファイルのアクセス回数について
Access(アクセス)
-
15
「済」の反対語は?
日本語
-
16
エクセルでセルの内容を表示するバーが表示されない
Excel(エクセル)
-
17
EXCELファイルに誰がアクセスしたかを見たい
Access(アクセス)
-
18
「取組」と「取り組み」の違い
日本語
-
19
Excelで重複データの件数ではなく、何番目かを求める方法
Excel(エクセル)
-
20
excel:別シートの値を飛び飛びで参照させたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Microsoft Officeを2台目のPCに...
-
大学のレポート A4で1枚レポー...
-
【Excel VBA】PDFを作成して,...
-
マクロ自動コピペ 貼り付ける場...
-
エクセルで英文字に入れた下線...
-
Microsoft Formsの「個人情報や...
-
Office2021を別のPCにインスト...
-
英数字のみ全角から半角に変換
-
outlookのメールが固まってしま...
-
office365って抵抗感ないですか?
-
Teams内でショートカットって貼...
-
Excel 日付を比較したら、同じ...
-
表の作成について
-
Office 2021 Professional Plus...
-
Microsoft365について
-
エクセルで特定のセルの値を別...
-
エクセルVBAで1004エラーになり...
-
MSオフィス2013にMS365が上書き...
-
MicrosoftOfficeの1ユーザー2...
-
1つのPCに「Excel 2010」「Exc...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Microsoft Officeを2台目のPCに...
-
英数字のみ全角から半角に変換
-
Office2021を別のPCにインスト...
-
エクセル ○○以上○○以下の関数を...
-
Office 2021 Professional Plus...
-
会社PCのメールが更新されない
-
outlookのメールが固まってしま...
-
Excelデータで必要な部分だけを...
-
表の作成について
-
マイクロソフト 一時使用コード...
-
エクセル ○○以上○○以下で、条件...
-
データの文字コードを確認するには
-
【Excel VBA】PDFを作成して,...
-
別シートの年間行事表をカレン...
-
office365って抵抗感ないですか?
-
office2019 のoutlookは2025年1...
-
Microsoft Formsの「個人情報や...
-
マクロ自動コピペ 貼り付ける場...
-
エクセル 関数の数値の入れ方を...
-
エクセル すべて+5をしたい
おすすめ情報