• ベストアンサー

エクセル2000のオプションボックスで質問です

いつもお世話になります。 エクセル2000のオプションボタンについて教えて下さい。 過去の質問でグループ化の方法は判ったんですが、今回作ろうと思っているシートに6つの選択肢のオプションボタンを500個位配置したいと思います。 何か簡単な方法は在りませんでしょうか? 宜しくお願い致します。

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

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

こんにちは。 朝から、ずっと、かなり試行錯誤を繰り返しました。 やっとサマになったのですが、不確定要素がかなりあって、もしかすると、うまく行かないのではないか、と思います。 フォーム・ツールは、コントロールツールよりは軽いけれども、数が多くなると動かなくなる可能性もあります。その場合は、例えば、ダブルクリック・イベントなどに換えてしまったほうが確実ですね。 なお、現在は、「距離」は、G列(7列目)に出力させるようになっております。7列目ではなければ、Const COL As Integer = 7 の部分を変更してください。 また、行の高さは、13.5 を標準にして作られていますので、それ以下では、誤動作の可能性があります。なるべく、新規のシートでお試しになったほうがよいです。 以下は、おまけとして、消去プログラムがついています。 以下のコードは、必ず、<標準モジュール>に設定してください。 '----------------------------------------------- Option Explicit   Private Const FIRST_ROW As Integer = 1 '始まりの行   Private Const LAST_ROW As Integer = 80 '終わりの行   Private Const COL As Integer = 7 '7列目に出す Sub AddOptionButton_Groups()   'フォームツール   Dim i As Long   Dim j As Integer   Dim GB As Object   Dim DefaultRowHeigth As Double       DefaultRowHeigth = ActiveSheet.Cells.EntireRow.RowHeight     For i = FIRST_ROW To LAST_ROW + FIRST_ROW - 1    With ActiveSheet.Cells(i, 1)      For j = 0 To 5      Set GB = ActiveSheet.GroupBoxes.Add(.Left, .Top, .Resize(, 6).Width, .Height)      With GB       .Text = ""       .Visible = False 'グループボックスのラインが消す      End With      With ActiveSheet.OptionButtons.Add(.Offset(, j).Left + .Width / 2, .Offset(, j).Top, .Offset(, j).Height, .Offset(, j).Height)         .OnAction = "OBIndexOut"         .Caption = ""         .Locked = True         .LockedText = True      End With      Next j           GB.Height = DefaultRowHeigth '高さを再設定    End With    Next i End Sub Sub OBIndexOut() 'LinkedCell の変り Dim rng As Range    Set rng = ActiveSheet.OptionButtons(Application.Caller).TopLeftCell  ActiveSheet.Cells(rng.Row, COL).Value = rng.Column  Set rng = Nothing End Sub '=============================================== Sub ObjectClear()  'おまけ-フォームツールを全部消去  ActiveSheet.GroupBoxes.Delete  ActiveSheet.OptionButtons.Delete  ActiveSheet.Columns(COL).ClearContents End Sub

datasraimu
質問者

お礼

回答有難う御座いました。 やりたかった事はバッチリこれでした。 ただやはり容量が大きくなりました。 一度これで作成してアクセスでも作ってみようと思います。

その他の回答 (4)

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

下記をやってみてどうですか。 3セットにとどめています。 縦に並べています。 質問はこんなことではない場合はすみません。 そうなら、後は本を読んで、グループ化や配置やプロパテイを勉強されてはどうでしょう。 Sub test01() ActiveSheet.DrawingObjects.Delete For j = 1 To 3 For i = 1 To 6 ActiveSheet.OLEObjects.Add ClassType:="Forms.OptionButton.1", _ Left:=180, Top:=60 + (j - 1) * 150 + (i - 1) * 20, Width:=16.5, Height:=18 Next i Next j End Sub 500÷6の85セット以上並べて、何をしようとしているのでしょうか。 とても他人に使ってもらうシートとしては問題があるように思いますが。 セルの位置と関連づけるなら、セルのTopの位置に関連づければよい。 Sub test01() ActiveSheet.DrawingObjects.Delete For j = 1 To 3 For i = 1 To 6 ActiveSheet.OLEObjects.Add ClassType:="Forms.OptionButton.1", _ Left:=Cells(1, "B").Left, Top:=Cells((j - 1) * 7 + i + 2, "A").Top, Width:=16.5, Height:=18 Next i Next j End Sub

datasraimu
質問者

補足

回答有難う御座いました。 やりたい内容はこんな感じです。 横向きにすれば出来そうです。 ただメチャメチャ容量大きくなりました。 どうしようか検討中です。

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

こんばんは。Wendy02です。 不安定な原因が分りました。それは、フォームのツールのそれぞれの実質的な領域があって、グループボックスで囲うと、チェックボックスの上と下が、その範囲をはみ出てしまうのことでした。だから、行の高さ13.5 で作っていくと、うまくいかないのでした。 >リンクするセルのオートフィルタで6番目だけの内容を表示、サマリしたいです。 オプションボックスサンプル   A 1 ●  *始まりはどこですか?どういうレイアウトですか? 2 ○ 3 ○ 4 ○ 5 ○ 6 ○  *集計はどこに出しますか? 7 ● 8 ○ グループボックスの線は必要ですか?要らなければ消します。 後、コントロールツールと比較してみますと、コントロールツールは、グループ付けが簡単ですが、集計がうまくいきません。また、ひじょうにシート全体が重くなるような気がしました。

datasraimu
質問者

補足

分かり難くてすみません。 実際には他の項目がありますがこんな感じです。 ABCDEFという選択肢と、距離の項目があります。 Fが選択された分の距離の集計を出したいです。 A B C D E F 距離 ○ ○ ○ ○ ○ ● 3 ○ ○ ● ○ ○ ○ 5 ○ ○ ○ ● ○ ○ 6 ○ ○ ○ ○ ○ ● 4 ○ ○ ● ○ ○ ○ 2 ○ ○ ○ ○ ○ ● 7        合計11 宜しくお願いいたします。

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

こんにちは。 オプションボタンはコントロールツールのほうですか?フォームのほうですか? 位置さえ、はっきりしていれば、マクロでできると思います。 ただし、コントロールが500個というのは、同じシート内では、かなり無理が出てくるかと思います。オプションボタンでなければならない理由はおありですか?計数管理だとすれば、いずれにしても、オプションボタンでなければならない、という理由がありませんね。 今、ためしに、フォーム側のオプションボタンを貼り付けるマクロを作ってみましたが、どうも、グループ化が安定していませんので、その原因を探ってみなければなりませんが。

datasraimu
質問者

補足

回答有難う御座いました。 やはり無理がありますか… 今は、フォームのグループボックスとオプションボタンで作成しようかと思っています。 やりたい内容は、行毎にオプションボタンを置いて、リンクするセルのオートフィルタで6番目だけの内容を表示、サマリしたいです。

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

ないと思います。 代案1.ユーザーフォームにオプショングループを設定して セルを選択するかボタンを押すとフォームを表示させてグループを選ばせる ※表示上同様のものを見せたいなら、別シートに 選択1 結果1 選択2 結果2.... 選択5 結果5 選択6 結果6 のような表を作成して範囲をコピーして、 元のシートにShiftを押しながら「編集」「図のリンク貼り付け」で結果を表示する 代案2.アクセスがあるならそちらを利用する。 アクセスの場合はフォームの詳細にオプショングループを作成すれば 各レコードにオプションボタンを設定できます。

datasraimu
質問者

補足

回答有難う御座いました。 いろんなパソコンで処理したいのでエクセルで(しかも2000で)やりたいと思います。

関連するQ&A

  • シート上のオプションボタン、チェックボックスを配列にする。

    シート上のオプションボタン、チェックボックスを配列にする。 Excel2003です。 シート上にオプションボタン、チェックボックスを増やすと、OptionButtonN、CheckBoxN (大文字Nは任意の数値)となります。これをOptionButton(N)のように配列にできないでしょうか? プログラムで扱う場合、配列でしたら処理が楽になると思うからです。 また、同じくシート上にオプションボタンを配置するとどれか1つしか選択できません。(ひとつしかValueをTrueにできません。) UserFormのようにFrameがあればその中で1つを選択できるのですが、シート上に直接配置する場合、Frameが扱えないように思います。グループ化して複数選択する方法はないでしょうか。 よろしくお願いします。

  • オプションボックスだけを押せるようにしたい

    エクセルでアンケートを作成中です。 オプションボタンをつくり、 たとえばYESとNOボタンをグループ ボックスボタンでかこんでひとつのセット にした後、 実際にアンケートを回答してくれる人の身 になって押してみると、回答するときに グループボックスで囲んだ 四角が選択されてしまうときもあるので きちんとボタンだけを押せるようにするには どうすればいいかわからず、ご存知の方 はお教えください。 グループ化すればいいんでしょうか。 あと、オプションボックス以外はシート を保護したいという条件もあります。

  • エクセルで、オプションボタンを大きく・・・

    エクセルで、オプションボタンを配置しましたが、ボタンの大きさ自体を大きくする方法はありますでしょうか オプションボタンを配置しましたが、ボタンが小さすぎて目立たないので もっと大きくしたいのですが、色々試行錯誤したんぼですが。。。わからず。。。 お分かりの方、ご伝授宜しくお願い致します

  • エクセルのオプションボタンのグルーピング

    申込書をエクセルで作成しています。 ひとつのシートの中に、いくつものグループに分けて オプションボタンを作りたいのですが、今ひとつ グルーピングの方法がわかりません。 グループボックスを使ってグルーピングしているつもりでも、 いつのまにか、他のグループとくっついてしまいます。 どうやったら、きれいにオプションボックスのグループを 分けることができるのでしょうか? 教えてください。

  • エクセルVBA オプションボタンのチェックを外したい

    いつもお世話になります。 エクセルで、ユーザーフォームでオプションボタンを使っているのですが、オプションボタンを選択し、ユーザーフォームを消して、もう一度表示させた時に、前に選択したオプションボタンの黒丸が残っている時があるのです。 ユーザーフォームを表示させた時に前に選択した黒丸を消す方法はありますでしょうか?

  • EXCELのオプションボタン

    ワークシートの各行に質問を書き、右端にオプションボタン(コントロールツールボックスではなくフォームのオプションボタンです)を貼り付けました。 質問項目によりはい・いいえの2択か、その他まである3択になります。 ところが行の高さがたりないせいか、オプションボタンを一番小さくして各行のボタンは、それぞれグループボックスで囲ったのですが、互いに影響しあってうまく働かないのです。 行の高さを大きくし(20くらい)グループボックスを上下に広げれば大丈夫です。 でもほんとうはもっと行の高さを低くしたいのです。(12くらいに)良い方法はないでしょうか?

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

    EXCELでアンケート用紙を作成しています。 択一式の設問にコントロールツールボックスの オプションボタンを使おうと考えています。 設問を複数作りたいのですが それぞれの設問に対しオプションボタンを 割り当てることができません。 つまり、sheet内のすべてオプションボタンのうち 1つしかチェックできません。 やりたいことは、 オプションボタンのグルーピングをして そのうち1つしか選べない様にして 他も同じようにグループ内でのみ択一に するようにしたいのですが どうしたらよいのでしょうか。 宜しく御願いします。

  • エクセルでチェックボックスが巨大化!

    エクセルで気になる現象がたまに起きます。 ワークシートに配置したフォームコントロールのチェックボックス、オプションボタンなどが、プリントしたあとでサイズが異常に巨大化するのです。 巨大化するのは見た目だけで、そのまま保存しても次回起動時には元のサイズになっています。 原因と対処法があれば教えてください。 ネットで検索するとグループ化すれば防げるような記事を見たので試しましたが、だめで巨大化します。いつもではなくたまになるので原因がわかりません。

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

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

  • EXCEL:フォームで作成したチェックボックス選択したのものみ表示

    EXCELのフォームのチェックボックスやグループ化したオプションボタンを多数使用したシートがあります。 チェックや選択したオプションボタンに応じて結果が同じシートに表示されるようIF関数を使用してます。 例)チェックボックス(1)「植物」にチェックがあり   グループ(1)はオプションボタン「赤」を選択   グループ(2)はオプションボタン「水」を選択   →『花』と表示   グループ(2)のオプションボタン「緑」を選択した場合は   →『木』と表示 選択した項目をペーパーで確認のために、選択した項目だけ別のシートに表示させ印刷したいのですが何か良い方法はないでしょうか。 チェックボックス一つに対してグループ約5つ というものが10個ほどあります。 チェックボックス(1)をチェックしたら、チェックボックス(1)とグループ(1)~(5)を別シートへ表示するといったようにしたいのですが・・・

専門家に質問してみよう