• ベストアンサー

エクセルのチェックボックスとオプションボタンの連携?について

エクセル内にチェックボックスとオプションボタンを作成していて 行き詰ってしまったので質問させてください。 例えば、下のようなデザインになっているとして、 Q1. □A □B (○C ○D)  ̄ ̄ ̄ ̄   ̄ ̄ ̄ ̄ ̄ ̄ ↑チェックボックス  ↑オプションボタン チェックボックスAとBのうち、Bにチェックを入れると 右にあるCとDのオプションボタンが選択可能になるという連携スタイルにすることは可能でしょうか? その場合は併せて、Aにチェックを入れた場合はCとDのオプションボタンが操作できなくなるようにもしたいのです。 どなたか教えて下さい。よろしくお願いします。

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

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

こんばんは。 最初に、 >VBAに関しては、なんとか調べながらできる程度なので VBAは、覚えるのに時間が掛かるし、その割りにはうまく使えないので、掲示板で上手に人に教わる方法を覚えたほうが早いです。(ブタもおだてりゃ木に登る(^^;。結構そんな程度で人は気を良くして書いてくれるものなのですね。気難しい人には、無視せず、さりげなく。。。) 本題です。(遅くなりました) #2のimogasiさんので応用は利きますが、こちらで書いてみました。 思ったよりも、先のことを考えると、なかなか難しいです。本当は、Class を使えば、オプションボタンの統一が可能なのですが、今度は設定がややこしくなります。 最初に、オプションボタン(コントロールツール)の横に4つずつ並べて、全部必要な数を並べてください。 ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ '以下は、全部シートモジュールでよいです。(コントロールツールのオプションボタンが編集可能-青い三角定規がオン-で、そのコントロールをダブルクリックすると、画面が開きます) '----------------------------------------- '(1) グループ分け用のマクロです。 Sub SettingGrouping() 'オプションボタンのグループ別けマクロ '一度だけ必要です。   Dim cnt As Long   Dim cn As Variant   Dim i As Integer, j As Integer   For Each cn In OLEObjects     If TypeOf cn.Object Is MSForms.OptionButton Then       cnt = cnt + 1     End If   Next cn   For i = 1 To cnt     j = Int((i - 1) / 2) + 1     OLEObjects("OptionButton" & i).Object.GroupName = "GR" & j   Next i End Sub '------------------------------------ 'オプションボタン用のマクロです。 '4つで1セットです。 3,4 ですが、次が、7,8 となります。 Private Sub OptionButton1_Click() Dim i As Integer  For i = 3 To 4   OLEObjects("OptionButton" & i).Enabled = Not OptionButton1.Value  Next i End Sub Private Sub OptionButton2_Click() Dim i As Integer  For i = 3 To 4   OLEObjects("OptionButton" & i).Enabled = OptionButton2.Value  Next i End Sub '----------------------------------- '次の行 Private Sub OptionButton5_Click() Dim i As Integer  For i = 7 To 8   OLEObjects("OptionButton" & i).Enabled = Not OptionButton5.Value  Next i End Sub Private Sub OptionButton6_Click() Dim i As Integer  For i = 7 To 8   OLEObjects("OptionButton" & i).Enabled = OptionButton6.Value  Next i End Sub '---------------------------------- 'オプションボタンの集計のためのマクロ(サンプル) Sub SumTotal() 'オプションボタン集計用マクロ   Dim cnt As Long   Dim cn As Variant   Dim n As Integer   Dim k As Integer   'オプションボタンの数を取る   For Each cn In OLEObjects     If TypeOf cn.Object Is MSForms.OptionButton Then       cnt = cnt + 1     End If   Next cn  k = 1  For i = 1 To Int(cnt / 4)   For j = 1 To 4    If OLEObjects("OptionButton" & k).Object.Enabled Then     n = Abs(OLEObjects("OptionButton" & k).Object.Value)     'J列からの書き出し     Cells(i, 10 + j - 1).Value = k & "," & n    Else     Cells(i, 10 + j - 1).Value = k & ", -"    End If    k = k + 1    Next j  Next i End Sub 書き出しは、 J列から 1,1  2,0  3, -  4, - 5,0  6,1  7,0  8,0 このような集計スタイルになります。これは、 k & "," & n k & ", -" ここで、違ったスタイルでも、アレンジできます。これは、集計しやすいようにします。当面、どのように集計をするかというサンプルです。

myu-jun
質問者

お礼

遅い時間にご回答いただき、ありがとうございました! 実は、集計に関してはあまり重要ではなかったのでオプションボタンをコントロールすることができただけで 大変助かりました。本当にありがとうございます。 >VBAは、覚えるのに時間が掛かるし、その割りにはうまく使えないので、掲示板で上手に人に教わる方法を覚えたほうが早いです。 参考になります。ありがとうございます!

その他の回答 (4)

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

>すべてオプションボタンで設定した場合は >どのようにすればいいのでしょうか。 #3 は、読み間違えで回答しました。 改めて書き直します。すみません。しばらく時間ください。

myu-jun
質問者

お礼

ありがとうございます。 #2の方へのお礼にも記載したのですが、 ダイアログボックスではなく、エクセルのシート上にボタンをおきたいので、 可能でしたらそのやり方を教えていただければ幸いです。 VBAに関しても、すらすらと操作できるほどではないので 基本的なことも質問してしまうかもしれませんが、どうかよろしくお願いいたします。

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

こんばんは。 #1の回答者です。 >それでは、すべてオプションボタンで設定した場合は >どのようにすればいいのでしょうか。 それは、 >Q1. >□A □B (○C ○D) > ̄ ̄ ̄ ̄   ̄ ̄ ̄ ̄ ̄ ̄ >↑チェックボックス  ↑オプションボタン このQuestion の内容に依存してくるのではないでしょうか? 例えば、チェックボックス自体も、二者択一ということも可能です。 これは、私の勝手な想像ですが、こういう方法はどうでしょうか? Aのチェックボックスを選択したら、Bは、オフになる。 Bのチェックボックスを選択したら、Aは、オフになって、なおかつ、オプションボタンの選択をしなくてはならなくなる。(そういうチェックボックスの使い方は間違っているという人もいますから、あえてお勧めはしません) --ということは、オプションボタン C, D の片方が、デフォルトになる、という方法にします。 私自身は、何度も、似たような質問は受けたことがあるのですが、質問として出てくるものは、どれひとつとして決まったものはありません。おそらく、ご質問者さんが当初考えている以上に、これは、難しい部分があるような予感がします。(そうでなければよいのですが。)理由は、今は、4つのコントロール・オブジェクトしかありませんが、おそらくは、20個とか、30個とか多数になってきます。そうすると、複雑になってきます。 とりあえず、こちらでは、どうするかは決めかねますので、ひとつの方法を選んでください。それに合わせて、考えていきます。Question の質問のサンプル文を出していただいて、こうしたいとおっしゃっても良いです。 なお、返事が遅くなるようでしたら、「お礼側」に入れてください。そうすると、メールがこちらに直接届きます。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

#1のお礼部分に関して userform内に ○OptionButton1 ○OptionButton1  ○OptionButton3          ○OptionButton4 の配置で貼り付ける。 --- Private Sub OptionButton1_Click() If OptionButton1 = True Then For i = 3 To 4 UserForm1.Controls("Optionbutton" & i).Enabled = False Next i End If End Sub Private Sub OptionButton2_Click() For i = 3 To 4 UserForm1.Controls("Optionbutton" & i).Enabled = True Next i End Sub Private Sub UserForm_Initialize() For i = 1 To 4 UserForm1.Controls("Optionbutton" & i) = False Next i For i = 3 To 4 UserForm1.Controls("Optionbutton" & i).Enabled = False Next i For i = 1 To 2 Me.Controls("OptionButton" & i).GroupName = "Group1" Next i For i = 3 To 4 Me.Controls("OptionButton" & i).GroupName = "Group2" Next i End Sub --- Userform1が Initialize時に 全てをFalse 1,2と3,4をグループ化 3,4はEnabeledをFalseに ーー 1をクリックしたとき Trueなら3,4をEnabeledをFalseに ーー 2をクリックしたとき 3,4をEnabeledをTrueに する。 ーーーーー 仕様がこれでよいかどうか。 しかしVBAのことを質問に一言も書いてない人に判るのかな。

myu-jun
質問者

お礼

詳しい説明をありがとうございました。 VBAに関しては、なんとか調べながらできる程度なのでご教授いただいたとおりに作業はできたのですが、 ダイアログボックスではなく、エクセルのシート上にボタンを おきたかったので、今回教えていただいたことを参考にまた少し頑張ってみます。

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

こんにちは。 ちょっと、そのままでは論理が成り立ちません。 >Bにチェックを入れると >右にあるCとDのオプションボタンが選択可能になるという連携スタイルにすることは可能でしょうか? というのは可能ですが、 チェックボックスは、二者択一ではなくて、両方がオフも、両方がオンもありますから、論理に食い違いが生じてしまいます。 例えばオプションボタン1,2 は、以下のようにすれば、選択が出来るようになりますし、また、選択が出来ないようにもなりますが、チェックボタンを両方を選択したときは、どちらでもありになってしまいます。少し、考えてみてください。 'コントロールツールのチェックボックスと、オプションボタン 'マクロは、そのツールのシートモジュール '--------------------------------------------- Private Sub CheckBox2_Click() Dim i As Integer  For i = 1 To 2      OLEObjects("OptionButton" & i).Object.Enabled = CheckBox2.Value  Next i End Sub Private Sub CheckBox1_Click() Dim i As Integer  For i = 1 To 2   OLEObjects("OptionButton" & i).Object.Enabled = Not CheckBox1.Value  Next i End Sub

myu-jun
質問者

補足

ありがとうございます。 おっしゃるとおりです。 それでは、すべてオプションボタンで設定した場合は どのようにすればいいのでしょうか。 よろしくお願いいたします。

関連するQ&A

  • EXCELのオプションボタンの使い方

    EXCELのコントロールツールボックス内でのオプションボタンの使い方について質問があります。 例えば、A,B,Cをどれかひとつだけ選択できるオプションボタンを作成します。 その後、Aを選択したときのみ、アクティブになる(または選択できるようになる)オプションボタンを作成することはできるのでしょうか? オプションボタンに上位、下位を設定したいのです。 なお、上位がオプションボタンでなくてもかまいません。 チェックボックスでAを選択した場合のみ、オプションボタンを選択できるようになるとか・・・。 どなたか教えてください。 よろしくお願いします。

  • VBのチェックボックス、オプションボタン、テキストボックス

    以前にたような質問したのですがうまくいかなかったので改めて質問します。 チェックボックスを使ってテキストに文字を表示させる。 オプションボタンを使ってテキストに文字を表示させる。この2つは簡単にできるのですが、これを組み合わせて、チェックをしたときはオプションボタンで表示されたものと違う表示をしたいのですがうまくいきません。 構成はチェックボックスが2つ、オプションボタン4つ。テキストボックスが4つです。テキストボックスはチェックボックスとオプションボタンそれぞれ同じものをつかっています。わかる方教えてください。説明がわかりにくいかもしれませんが・・

  • Excel ツールボックス オプションボタン 背景透明化

    Excel ツールボックスでオプションボタンを作りました。 背景色を透明化しようとバックスタイルのところを "0" にしました。デザインモード終了し、いざ、チェックするとオプションボタンのところだけ背景色が変わってしまいます。白色などの色になります。どうもバックカラーの色が出てしまうような気がします。 シート全体には、背景色の色を変えており、網掛けもしています。シート全体の背景色とオプションボタンの背景色には微妙な色の差があります。 どうしたらいいでしょうか?

  • エクセルのオプションボタンの使い方について質問です。

    エクセルのオプションボタンの使い方について質問です。 オプションボタンで1行目か2行目を選択し、D1とD2を結合したセルに BとCをかけ合わせた値を入れたいのです。 BとCの値は、目視確認のため、ここに明示しておきたいです。 A B C D | o | 1 | 100 | 1*100 | o | 2 | 100 | 2*100 ↑オプション オプションボタンを設置するところまではできたのですが、 使い方がわかりませんでした。 どなたかご教示ください。

  • エクセルでチェックボックスを非表示にしたい。

    エクセルでチェックボックスを非表示にしたい。 こんにちわ。 エクセルのチェックボックス等を表示しないようにすることは可能でしょうか? 例えば   A    B    C    D 1 チェ   チェ   チェ   チェ  2 あああ いいい ううう えええ (チェがチェックボックス) のようになっている状況で ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓   A    B    C    D 1 チェ   チェ   チェ   チェ  2 あああ     ううう えええ のようにB2を消したら ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓   A    B    C    D 1 チェ        チェ   チェ  2 あああ     ううう えええ このようにB1にあったチェックボックスを非表示、もしくは削除したいです。 このようなことは可能でしょうか? ぜひアドバイスをお願いいたします。

  • オプションボタンにチェックが入れば・・

    いつもお世話になっております。 今回もご指導のほど宜しくお願い致します。 Excel2002を使っておりますが 例えば A1に フォームのオプションボタンを挿入し、ボタンにチェックが入れば B1に“c”と表示させるには どのような方法がありますでしょうか・・ 説明が悪いようでしたら ご指摘下さいませ。 宜しくお願い致します。

  • チェックボックスとボタンの組み合わせによってリンク先を決める

    当方、script等にはまったく持って初心者です。 以下の仕様のJavascriptが作りたいのですが、全然わからないのです・・・。 チェックボックスAとボタンAを押す・・・・1のリンク先へ チェックボックスBとボタンAを押す・・・・2のリンク先へ チェックボックスCとボタンAを押す・・・・3のリンク先へ チェックボックスAとボタンBを押す・・・・4のリンク先へ チェックボックスBとボタンBを押す・・・・5のリンク先へ チェックボックスCとボタンBを押す・・・・6のリンク先へ 見た目的にはこんな感じです。 ------------------- □暇なときに回答ください □困ってます □すぐに回答ほしいです [Aボタン][Bボタン] ------------------- という感じです。 チェックボックスは複数選択する予定はありません。 (なので、チェックボックスではなく、ラジオボタンでも可です)。 チェックボックスを複数選択しない・・というとこへのツッコミはなしでお願いします^^; 何卒よろしくお願いいたします。

  • チェックボックスをラジオボタンでの選択に変更したい

    タイムライン(1)にA・B・C3枚のデータを作成してあります。 a・b・c3通りのチェックボックスを作成して、「a」をクリックした場合にはb・cのデータが隠れ(false)aが表示される(true)(b・cも同様で、a・b・c全部を選択していない場合には全部が表示される)スクリプトを書きました。 ところが、チェックボックスの場合には、利用者が例えば2つを選択することが可能なために、この場合には2つのデータが表示され混乱します。 そのため、チェックボックスをラジオボタンに変更して、且つ同様な動きをさせたいと思っています。 ラジオボタンの場合は「ムービークリップ」のために同様なことは出来ないのでしょうか? 宜しくお願いします。

  • チェックによる複数ボタンの有効化

    済みません教えてください。 同意するのチェックボックスにチェックを入れないと 「次へ進む」のボタンが有効にならないスプリクトがありまが、 複数のチェックボックスと複数のボタンを同時に行なう方法を教えてください。 例 A○ B○ C○ D○ E○ 「ボタン1」 ←いつでも有効(キャンセル等) 「ボタン2」 ←Bのチェックボックスにチェックが入ると有効になりクリックで1537.htmlへリンク 「ボタン3」 ←Dのチェックボックスにチェックが入ると有効になりクリックで2468.htmlへリンク とこんな形です 初心者なので、<head> へ入れる文と<body>へ入れる文を教えてください。

  • エクセルVBA チェックボックスで;;

    下記のような表を作っているんです・・・     A   B   C    D    1  日付  名前  評価   2  1日   あ   A   □ 3  2日   い   B   □ 4  2日   う   A   □ 5  4日   え   D   □ というような感じです(まだ右と下は項目いっぱいあります) Dのセルにチェックボックスをつけてチェックが入った物のみを別なシートにコピーしてそのページを印刷させ印刷し終わったら印刷した行の色を変えたいのです。 色々試してみたのですが、チェックボックスのON OFF判断もままならない状況でした;; どなたか宜しくお願いいたします。

専門家に質問してみよう