[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『複数のチェックボックスから1つだけ選択できるようにしたいです』(コロコロおにぎり)
質問失礼致します。複数の項目から一つだけを選択できるチェックボックスを作成したいのです。下のようにそれぞれの1〜5の評価項目から一つだけを選択するようにしたいです。
Åさん Bさん Cさん
1営業力 5:大変良い □ □ ☑
4:良い □ ☑ □
3:普通 ☑ □ □
2:消極的 □ □ □
1:悪い □ □ □
2企画力 5:大変良い □ □ □
4:良い □ ☑ □
3:普通 □ □ ☑
2:消極的 ☑ □ □
1:悪い □ □ □
〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜
こんなシートを複数作りたいのですが、どのようにしたらよろしいでしょうか。よろしくお願いいたします。
< 使用 Excel:Excel2021、使用 OS:Windows11 >
Windows標準的には、複数の選択肢から択一するコントロールは、Optionボタンです
希に四角形のチェックボックスで択一をしたいという人がいますが、 自分でコードを書いて実装しないといけないので、それなりに面倒です
ユーザーインターフェイスの分かりやすさからしても、標準的なOptionボタンを使うことをお勧めします。
検索するとこのような参考サイトがヒットしました オプションボタンの挿入(フォームコントロールとActiveXコントロール) https://hamachan.info/win8/excel/option.html (´・ω・`) 2024/01/03(水) 18:09:32
質問です。
既に、チェックボックスの使用を諦めて、オプションボタンでの制作に 取り掛かっているのであればスルーしてください。
|[A]|[B] |[C] |[D]
[1]|No.|項目 |評価 |Aさん
[2]| 1|営業力|5:大変良い|
[3]| | |4:良い |■レ
[4]| | |3:普通 |
[5]| | |2:消極的 |
[6]| | |1:悪い |
*上記範囲 [ D2:D6 ]にて、本来はチェック「4:良い」状態から、チェック「2:消極的」へ チェックが入れば、チェック「4:良い」のチェックが「 OFF 」になるのが理想であるが そのロジックはできないが、選択範囲 [ D2:D6 ] に...2つのチェックが入れば その範囲分だけのチェックを外す事は可能とする使用でも良いか?
*想定している評価の項目数はどれくらいでしょうか? テスト的に、10項目,人数3名にて制作していますが、この程度であれば 多分…問題ない使用です。仮に、20項目,人数5名までならマクロは不細工になる ばかりであるが我慢して使用は可能です。(それ以上の項目になる、また人数は10名) となるような話だとちょっとキツイかも^^;
〈 こちらとして出来る事 〉
*サンプル10項目、人数3名分に適応したマクロの提示 *チェックボックスの右範囲に集計表を作り、チェックと同時に 各スタッフの評価点数を算出する。 *シートが増えても、同じ適用範囲のマクロを使用するだけなので問題ない。
〈 コロコロさんのする事 〉
*実際の適用範囲「項目数、人数」に合わせて [ Rangeの範囲 ]を 計算して変更する。少しはご自身での制作が必要となります。 (あみな) 2024/01/05(金) 14:58:31
|[A] |[B] |[C] |[D] |[E]
[1] | | |Aさん|Bさん|Cさん
[2] |1営業力|5:大変良い|□ |□ |☑
[3] | |4:良い |□ |☑ |□
[4] | |3:普通 |☑ |□ |□
[5] | |2:消極的 |□ |□ |□
[6] | |1:悪い |□ |□ |□
下準備です。 「リンクするセル」はチェックボックスのセルにそれぞれ設定する。 表示形式「ユーザー定義」でリンクした範囲を指定して「;;;」にする。
概要 コントロールの書式設定で「リンクするセル」を設定したセルの値「TRUE、FALSE」を 変更すると☑にしたり□にしたりすることができます。 どのチェックボックスが押されたか「Application.Caller」使用して ☑にの時に他は□「FALSE」にます。 ☑によって「Select Case」で分岐させています。
Sub Block_1()
Dim Cb As String
Cb = Application.Caller
Select Case Cb
Case "チェック 1" 'C2
ActiveSheet.Range("C3,C4,C5,C6").Value = False
Case "チェック 2" 'C3
ActiveSheet.Range("C2,C4,C5,C6").Value = False
Case "チェック 3" 'C4
ActiveSheet.Range("C2,C3,C5,C6").Value = False
Case "チェック 4" 'C5
ActiveSheet.Range("C2,C3,C4,C6").Value = False
Case "チェック 5" 'C6
ActiveSheet.Range("C2,C3,C4,C5").Value = False
Case Else
ActiveSheet.Range("C2,C3,C4,C5,C6").Value = False
End Select
End Sub
Sub Block_2()
Dim Cb As String
Cb = Application.Caller
Select Case Cb
Case "チェック 6" 'D2
ActiveSheet.Range("D3,D4,D5,D6").Value = False
Case "チェック 7" 'D3
ActiveSheet.Range("D2,D4,D5,D6").Value = False
Case "チェック 8" 'D4
ActiveSheet.Range("D2,D3,D5,D6").Value = False
Case "チェック 9" 'D5
ActiveSheet.Range("D2,D3,D4,D6").Value = False
Case "チェック 10" 'D6
ActiveSheet.Range("D2,D3,D4,D5").Value = False
Case Else
ActiveSheet.Range("D2,D3,D4,D5,D6").Value = False
End Select
End Sub
Sub Block_3()
Dim Cb As String
Cb = Application.Caller
Select Case Cb
Case "チェック 11" 'E2
ActiveSheet.Range("E3,E4,E5,E6").Value = False
Case "チェック 12" 'E3
ActiveSheet.Range("E2,E4,E5,E6").Value = False
Case "チェック 13" 'E4
ActiveSheet.Range("E2,E3,E5,E6").Value = False
Case "チェック 14" 'E5
ActiveSheet.Range("E2,E3,E4,E6").Value = False
Case "チェック 15" 'E6
ActiveSheet.Range("E2,E3,E4,E5").Value = False
Case Else
ActiveSheet.Range("E2,E3,E4,E5,E6").Value = False
End Select
End Sub
「C2:C6」Block_1 チェックボックスは上から「チェック 1〜5」としています。 「D2:66」Block_2 チェックボックスは上から「チェック 6〜10」としています。 「E2:E6」Block_3 チェックボックスは上から「チェック 11〜15」としています。
この様にすると単一選択にはできます。
欠点として図のようにブロック単位で設定するので面倒くさいです。
(IT) 2024/01/14(日) 16:27:50
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.