• ベストアンサー

一つのセルの中に二個のチェックボックスを作りたい

 Excel2003の質問です、宜しくお願いします。  一つのセルの中で 「□良い □悪い」という回答にチェックを入れて貰うような フォームみたいなものを設定したいのですが、どのようにしたら良いのでしょうか。  Wordなら、ツールバーのフォームから設定できそうなのですが、Excelの一つのセル の中に二つ以上のチェックボックスの設定の仕方が分かりません。  また、二個以上のチェックをつけるとセルの色が赤になるとか、何もつけない (シートを開いた状態)と緑になるとかにしたいのですが、どのようにしたら良いのか、 さっぱり分かりません。  宜しくお願いします。

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

  • ベストアンサー
  • chonami
  • ベストアンサー率43% (448/1036)
回答No.2

表示→ツールバー→フォームにチェックを入れるとフォームツールバーが出てくると思いますので、チェエクボックスを選んで任意のセルに二つ作ったら如何ですか? また、チェックボックスは他セルとリンクさせてチェックが入っているとTrue、入ってないとFalseとする事ができますので、リンクセルの状態を条件に条件付書式を設定すれば色付けもできるかと思います。 チェックボックスを右クリック→コントロールの書式設定→コントロールタブ リンクさせるセルにお好きなセルを設定。 これを二つそれぞれ別セルにリンク。 チェックボックスを入れているセルに条件付書式で色付け(リンクセルが両方ともTrueとかどちらもFalseとか) でも択一の設問ならオプションボタンの方がいいかと思います。 (白丸の中に選択すると黒丸が入るもの) オプションボタンを使用する場合は、設問がいくつかある場合はグループボックスで設問ごとに囲んでください。 囲んだ中で一つだけが選択されるようになります。 こちらはリンクすると「1,2・・・」と数値で返ります。

その他の回答 (9)

  • layy
  • ベストアンサー率23% (292/1222)
回答No.10

「□良い □悪い」でここまでしないといけないのか?。 良悪でなくても、この(対関係)分類でチェックで2つ並べるのはおかしい。 ラジオボタンでないのか?。 前述べたように、 「□良い」 のOFFで 「□悪い」 のON、その逆だし、 両方押すことないし、押されないことはある。 これらを連動させるのか?。 それもおかしい。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.9

マクロ自体の問題ではありませんが、コメントが前のままでした。 >.CheckBoxes("CB" & j).Value = xlOff Then '1個       ↓ .CheckBoxes("CB" & j).Value = xlOff Then '0個 です。 もし、お使いのようなら、ここらは、また要相談ですね。VBAでも構わないならですが。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答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

  • chonami
  • ベストアンサー率43% (448/1036)
回答No.7

えと、フォームでのチェックボックスやオプションボタンですが、基本的にオブジェクトなので配置するセルの位置などには左右されません。 セルの境目に置こうが機能は変化しません。 見た目の問題でセルの中に置きたいのかと思いますので、そこはセルを大きくして二つ並べればいいと思いますが、その色を変えたいセルとチェックボックスの位置は直接は関連しません。(そのセルの中にチェエクボックスがないと駄目なわけではない。) 例えば、チェエクボックスをA5セルに配置していても、A1セルの色を変えたりする事ができます。 チェックボックス1のリンクセル→C1 チェックボックス2のリンクセル→C2 とした場合A1に条件付書式の数式で「=AND($C$1=TRUE,$C$2=TRUE)」→お好きな色 と設定すればA5にあるチェックボックスが二つともチェックが入ればA1が赤になります。 個人的には、扱いやすいフォームツールが好きなので力説してしまいました。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答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 の点線の領域線が現れるかと思います。その領域線の左上端が、その色を変更するセルの中にないといけません。 端 ↓ +………+ +……… | □  | | □ +………+ +………

  • layy
  • ベストアンサー率23% (292/1222)
回答No.5

良い、悪い、何もつけない、の3択か。 対義語なら1つチェック入れるか入れないか。 「良い」から「悪い」にしたいとき 「良いON」→「良いOFF」で、 さらに「悪いON」にしないと「悪い」にならないのはうっとおしい。 「良い」も「悪い」もONにできるが、その制御はどうする?。 事例だから「良い、悪い」にしただけ、ならいいが・・・。

  • imo8001
  • ベストアンサー率14% (26/179)
回答No.4

If CheckBox1.Value = True And checkbox2.Value = True Then のように 条件分岐をします ♯3氏が指摘されている フォームのチェックボックスは使ったことが無いのでよくわかりません ほとんど ユーザーフォーム のほうのチェックボックスか シートのコントロールチェックボックスしか 使っていないので・・。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

Excelのチェックボックスには、ANo.1の方が説明しているコントロールボックスのチェックボックスと、ANo.2の方が説明しているフォームのチェックボックスの2種類があります。 フォームの方が古い機能なので、どちらかといえばコントロールボックスの方が主流です。 しかし、今回のようにチェックボックスが乗っているセルの色を変えたいならフォームの方がお勧め。 コントロールボックスの方は、背景色を透明(プロパティでBackStyle=0)に設定してセルの色をそのまま見せようとしても、チェックボックスをクリックするとなぜか背景色が不透明になります(おそらくExcelのバグ)。

  • imo8001
  • ベストアンサー率14% (26/179)
回答No.1

コントロールツールボックスのチェックボックスは セルに影響されない配置ができるで これを使えばいいのでは? チェックボックスの値がTRUEかFALSEかでの条件判断はVBAでないと無理かと思います

htgotk_001
質問者

お礼

 imo8001さん、回答有難う御座います。    一つのセルの中に2個のチェックボックスを配置して、そのチェックボックスがチェックされた こと(1個とか2個とか)はどのようにして、VBAで拾ってやれる(判断できる)のでしょうか。

関連するQ&A