• ベストアンサー

エクセルのチェックボックスについて

エクセルでアンケートのようなチェック項目がある物を作っているのですが、フォームのチェックボックスは「オン」「オフ」しかないので、次のようなことが出来なくて困っています。 例) □ 今日の天気は晴れです。 □ 今日の天気は雨です。 □ 今は午前です。 □ 2月は英語でFebruaryです。 □ 1+1=2です。    ・    ・    ・ 以上のようにチェック項目があり、該当するところにチェックをつけ、チェックされた数を出します。 また、項目が必要のない時は、例えば二重線(エクセルでは取消線は一本ですが)で消して、消した項目以外の数をだす、というような物です。 この二重線で消すという操作を、チェックボックス上でクリックするだけで、「オン」→「オフ」→「どちらでもない(?)」というようなことは出来るのでしょうか。 チェックボックスのコントロールの書式設定のコントロールタブの中に、「淡色表示」というのがあるのですが、これを「オン」「オフ」と同じようにワンクリックのみで出来たらと思い、質問させていただきました。 分かりにくい質問で大変申し訳ありませんが、どうかお知恵をおかしください。 また、発送の転換で「こんな方法はどう?」などというのがありましたら、お願いいたします。

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答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 メッセージボックスに数が表示されたでしょうか。 後は、フォームのテキストボックスなどに表示するなり、適宜変更して下さい。

その他の回答 (2)

  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.2

無理してチェックボックスを使うことはないと思いますが・・・ チェックボックスをやめて、セルに「入力規則」を設定しては 如何でしょうか? メニューから[データ]-->[入力規則]-->[設定]タブで 「入力値の種類」を「リスト」にして「元の値」に ○,×,△ などと 入れて選択するようにし方が良いかと思いますが如何でしょうか。

jun11jun
質問者

お礼

早速のご回答ありがとうございます。 ja7awuさんのおっしゃるとおり、別の入力方法をと思ったのですが、いま作製している物は、不特定多数の方が使用されますので、できるだけ簡単にと思っております。 確かに、○、×、△等でも入力規制を使用して簡単にできますが、様式が決まっていて、チェックボックス形式しかダメなのです(T_T) せっかくご回答をいただいたのですが、別の機会の参考とさせていただきます。申し訳ありません。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 いまいちやりたいことがわかりませんが、こういうことでしょうか。 まず、チェックボックスのプロパティの[TribleState]を「True」にします。 そして、チェックボックスのChangeイベントなどに以下のように書きます。 If IsNull(CheckBox1.Value) Then   CheckBox1.Font.Strikethrough = True Else   CheckBox1.Font.Strikethrough = False End If これで、チェックボックスをクリックするたびに、 取り消し線(グレー) → チェックあり → チェックなし の順に変わると思います。

jun11jun
質問者

お礼

わかりづらい説明にもかかわらず、ご回答いただきありがとうございました。 先ほど教えていただいたとおりやりましたら、私の理想としていることが出来ました。 ただ、ここから先、チェックされた数と、取消線が入った物以外の項目数を表示したいのです。 ご迷惑をおかけいたしますが、もしお分かりでしたらお教え下さい。

関連するQ&A

  • エクセルで文字列をチェックボックスのように…

    エクセルで、文字列をチェックボックスのように、オン、オフができますか。 分かり易くいうと、チェックボックスにもチェックする四角の横に文字を書くことができますが、この四画のボックスを表示しないで文字のみ表示するとか、コントロールツールボックスのラベルを、クリック1回で処理が終了するのではなく、チェックボックスのようにクリックするたびにTrue、Falseと、指定したセルに表示すると言うことです。 分かり易くと書きましたが、分かりにくくなってしまったかもしれませんが、よろしくお願いします。

  • Excelのチェックボックスについて

    Excelのチェックボックスを使用して、チェックをONにした時はセルの値を表示、OFFにした時はセルの値を非表示にしたい場合、具体的にどうすれば良いか教えてください。

  • エクセルのチェックボックスについて教えてください

    エクセルのチェックボックスについて質問します。 ネットで調べたところ、下記の様にありました。 (1)[フォーム]ツールバーを表示しておきます。[チェックボックス]ボタンをONにして、ワークシート上でクリックすると、チェックボックスが表示されます。 (2)チェックボックス上で右クリックし、[コントロールの書式設定]をクリックします。 (3)[コントロールの書式設定]のダイアログボックスで、[コントロール]のタブをクリックし、[値]で規定値を設定します。・・・ とありましたが、私の使用しているパソコンでは、コントロールの大やログボックスで[コントロール]タブが見当たりません。 何か特別な設定でもいるのでしょうか? 使用しているエクセルは2003です。 分かる方がいらっしゃいましたら教えてください。よろしくお願いします。

  • エクセルのチェックボックス

    エクセルで作成した表  日付と品名とチェックボックスと金額が入ったセルがあります。    例  A           B        C 日付          金額   チェックボックスと金額 1999/12/1   1000   □  500 2000/10/1   2000   □  600 という風にデータが入った表を日付ごとに並べ替えをしようとすると チェックボックスのデータだけチェックマークがオンのデータをオフのデータが 並びかえがされず、困っています。 どうしたらいいのでしょうか?

  • エクセルでチェックボックスのON・OFFをキーボード切り替えたい

    エクセル初心者です エクセルでチェックボックスのON・OFFを キーボードで切り替えたいのですが、 フォーカスがチェックボックスの上にいってくれません どのようにしたらチェックボックスの上に フォーカスがいくのでしょうか

  • EXCELのチェックボックスについて

    EXCEL2003を使用しています。 ■質問項目があり、回答する複数のセルにチェックボックスを配置してあります。 A列:質問 B列:回答のチェックボックス C列:回答のチェックボックス D列:回答のチェックボックス : Z列:OK 又は NGと表記したい。 ■各列の回答チェックボックスが全てonになっていたらOK、1つでもoffになっていたらNGと、Z列に表記させたいのですが、どのような式になりますか? ご回答の程、よろしくお願いいたします。

  • 複数のチェックボックス

    困ってます。 前回ボタンクリックでチェックボックス768個を全部ONにしたりOFFにしたりするプログラムを教えてもらい何とかできたのですが、768個のチェックボックスを1個1個押したときのプログラムを一つにまとめたい場合は、どうすればよかったのでしょうか。 前回教えてもらった物をヒントに作ったのですが思った動きをしません。 初心者にわかりやすく教えてもらえますか。 ボタンクリックと同じ場所に飛ばしているせいか  Select Case DirectCast(sender, Button).Name のbuttonでエラーが出ることが分かっています。 ただいろいろやりましたがSelectCase文で行っても1個のチェックボックスには反応しますがほかのチェックボックスは無視します。 よろしくお願いします。

  • エクセル チェックボックスについて

    エクセルのチェックボックスを利用してアンケート用紙を作りたいです。それを簡単に集計したいです。例えば1)・・2)・・というような項目の前にチェックボックスを使用して集計したいのですが、出来ますか?

  • word2000チェックボックス

    word2000で、あるフォームを作り、チェックボックスを挿入しました。 これを、会社のみんなに使ってもらいたいので、チェックボックス部分をクリックしただけでチェックを付けたり消したり出来るようにしたいのですが、可能でしょうか? 現状、ダブルクリックして「既定値の設定」の「オンにする」「オフにする」で付けたり消したり出来ますが、このままだとわかりにくいので苦情が来そうです。

  • エクセルVBAでのチェックボックス操作

    エクセルを利用した、VBAで困っています。 所定のsheetに埋め込まれたチェックボックスに対して、 別sheet内のセルの値を参照し、結果をオン、オフという 操作を行いたいのですが、チェックボックスに対するVBAでの指定方法 が分かりません。 イメージとしては (1)Sheet1内にチェックボックスがある。  該当チェックボックスは7個のチェックボックスで構成されており  それぞれにchb1~chb7といったオブジェクト名がある。 (2)sheet2のA1セルに特定の値が入っていればチェックボックス(chb1)  がオン値がなければオフのまま (3)sheet2のB1セルに特定の値が入っていればチェックボックス(chb2)  がオン値がなければオフのまま という感じです。 先方より指定された様式なのでsheet1の内容や書式を変更することが出来ないので、なんとか埋め込まれたオブジェクトを操作したいのですが・・・ 良い方法があれば教えてください。

専門家に質問してみよう