

エクセルでアンケートのようなチェック項目がある物を作っているのですが、フォームのチェックボックスは「オン」「オフ」しかないので、次のようなことが出来なくて困っています。
例)
□ 今日の天気は晴れです。
□ 今日の天気は雨です。
□ 今は午前です。
□ 2月は英語でFebruaryです。
□ 1+1=2です。
・
・
・
以上のようにチェック項目があり、該当するところにチェックをつけ、チェックされた数を出します。
また、項目が必要のない時は、例えば二重線(エクセルでは取消線は一本ですが)で消して、消した項目以外の数をだす、というような物です。
この二重線で消すという操作を、チェックボックス上でクリックするだけで、「オン」→「オフ」→「どちらでもない(?)」というようなことは出来るのでしょうか。
チェックボックスのコントロールの書式設定のコントロールタブの中に、「淡色表示」というのがあるのですが、これを「オン」「オフ」と同じようにワンクリックのみで出来たらと思い、質問させていただきました。
分かりにくい質問で大変申し訳ありませんが、どうかお知恵をおかしください。
また、発送の転換で「こんな方法はどう?」などというのがありましたら、お願いいたします。
No.3ベストアンサー
- 回答日時:
チェックボックスの値は、
まずNullかどうかをIsNull関数でチェック
Nullでない場合は、Valueプロパティを参照
という手順で取得します。
また、チェック項目が多い場合、1つずつ書くのは大変なので、うまくForループを使用するように工夫します。
いろいろ方法はありますが、Tagプロパティを使用する方法を紹介します。
まず、該当するチェックボックスのTagプロパティに、全て同じ値を入力しておきます。(ここでは"AAA"とします。)
それ以外のフォーム上のコントロールのTagプロパティに、上記の値が入っていないようにしておきます。
とりあえず、フォーム上にコマンドボタン(CommandButton1)を置いて、そのクリックイベントに以下のように記述します。
Private Sub CommandButton1_Click()
Dim chk As Control 'コントロールオブジェクト
Dim TrueCount As Long 'チェックありの数
Dim FalseCount As Long 'チェックなしの数
'変数の初期化
TrueCount = 0
FalseCount = 0
For Each chk In Me.Controls
'Tagプロパティが一致するもののみ
If chk.Tag = "AAA" Then
'値がNullでない場合のみ
If Not IsNull(chk.Value) Then
If chk.Value Then
'チェックありの場合
TrueCount = TrueCount + 1
Else
'チェックなしの場合
FalseCount = FalseCount + 1
End If
End If
End If
Next chk
MsgBox "チェックあり:" & TrueCount & vbCrLf & "チェックなし:" & FalseCount
End Sub
メッセージボックスに数が表示されたでしょうか。
後は、フォームのテキストボックスなどに表示するなり、適宜変更して下さい。
No.2
- 回答日時:
無理してチェックボックスを使うことはないと思いますが・・・
チェックボックスをやめて、セルに「入力規則」を設定しては
如何でしょうか?
メニューから[データ]-->[入力規則]-->[設定]タブで
「入力値の種類」を「リスト」にして「元の値」に ○,×,△ などと
入れて選択するようにし方が良いかと思いますが如何でしょうか。
早速のご回答ありがとうございます。
ja7awuさんのおっしゃるとおり、別の入力方法をと思ったのですが、いま作製している物は、不特定多数の方が使用されますので、できるだけ簡単にと思っております。
確かに、○、×、△等でも入力規制を使用して簡単にできますが、様式が決まっていて、チェックボックス形式しかダメなのです(T_T)
せっかくご回答をいただいたのですが、別の機会の参考とさせていただきます。申し訳ありません。
No.1
- 回答日時:
こんにちは。
maruru01です。いまいちやりたいことがわかりませんが、こういうことでしょうか。
まず、チェックボックスのプロパティの[TribleState]を「True」にします。
そして、チェックボックスのChangeイベントなどに以下のように書きます。
If IsNull(CheckBox1.Value) Then
CheckBox1.Font.Strikethrough = True
Else
CheckBox1.Font.Strikethrough = False
End If
これで、チェックボックスをクリックするたびに、
取り消し線(グレー) → チェックあり → チェックなし
の順に変わると思います。
わかりづらい説明にもかかわらず、ご回答いただきありがとうございました。
先ほど教えていただいたとおりやりましたら、私の理想としていることが出来ました。
ただ、ここから先、チェックされた数と、取消線が入った物以外の項目数を表示したいのです。
ご迷惑をおかけいたしますが、もしお分かりでしたらお教え下さい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
首吊りどこ締めるの
-
検便についてです。 便は取れた...
-
病院側から早く来てくださいと...
-
Excel 数値の前の「 ' 」を一括...
-
VLOOKUP関数を使用時、検索する...
-
リンク先のファイルを開かなく...
-
エクセルで数式の答えを数値と...
-
彼女のことが好きすぎて彼女の...
-
2つの数値のうち、数値が小さい...
-
血小板増加について
-
腕を見たら黄色くなってる部分...
-
小数点以下を繰り上げたものを...
-
風俗店へ行く前のご飯
-
【Excelで「正弦波」のグラフを...
-
EXCELで式からグラフを描くには?
-
Excel関数:本日以降(以前)の...
-
値が入っているときだけ計算結...
-
Excelで列の上4桁のみ抽出させ...
-
エクセルでエラーが出て困って...
-
Excelグラフのラベルオプション...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
首吊りどこ締めるの
-
検便についてです。 便は取れた...
-
値が入っているときだけ計算結...
-
彼女のことが好きすぎて彼女の...
-
尿検査前日に自慰行為した時の...
-
VLOOKUP関数を使用時、検索する...
-
Excel 数値の前の「 ' 」を一括...
-
精液の落とし方を教えてください
-
【Excelで「正弦波」のグラフを...
-
2つの数値のうち、数値が小さい...
-
風俗店へ行く前のご飯
-
精子に血が・・・
-
リンク先のファイルを開かなく...
-
小数点以下を繰り上げたものを...
-
EXCELで条件付き書式で空白セル...
-
イタリアから帰国する際、肉製...
-
excelでsin二乗のやり方を教え...
-
腕を見たら黄色くなってる部分...
-
病院側から早く来てくださいと...
-
ワードのページ番号をもっと下...
おすすめ情報