- ベストアンサー
エクセルのコンボボックスについて
エクセルのコンボボックスを2つ設け、一方の選択の内容で、他方の選択内容を変更したいと考えます。エクセルで簡単にできる方法はないでしょうか? 8月31日の質問(No34606)の回答でVBAの利用が記載されていましたが、私はVBAは分かりませ。他に方法がないでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
VBAを使わず操作だけでは難しいと思う。ただ初心者に毛の生えた程度の私の知識から言っている事で、直後に良い解答が載るかもしれない。 (難しいところ) Sheetにコンボボックス(コントロール)を貼りつけする やり方は判りますね。そのうちの1つの方において、小さい8個の四角が四隅と辺中間に出ている状態で、その中で、右マウスクリックしてください。 プロパティウインドウが出て、アルファベット順で「L」の ところにある、ListFillRangeの行の右列にA2:A6と入れてください。営業所名のつもりです。またA1:A6に下記 データを入れてください。 営業所名(見だし。なくても良い) 東京 大阪 名古屋 福岡 静岡 もっと増やす時はA2:A20とかなります。そしてA2セル からA20まで営業所名を入れてください。行に並べることも 可能でしょう。 これでコンボボックス2の下▼をクリックすると、東京から 静岡までリストが出て、どれかクリックした福岡とかが、上の ボックスにセットされます。 さて各営業所の管轄商圏をC列からG列までに下記の通り入れます。 C D E F G 東京 大阪 名古屋 福岡 静岡 中央区 大阪市 岐阜市 福岡市 浜松市 千代田区堺市 豊橋市 北九州市三島市 三鷹市 東大阪市 久留米市静岡市 武蔵野市寝屋川市 長崎市 熊本市 さてコンボボックス1のListFillRangeに、コンボボックス2 で福岡を選んだ時はF1:F6、静岡を選んだ時はG1:G4をセットしたいのですが、自動・連動でこれを左右してListFillRangeにセット方法がそもそも、予期されていないと思います。 (2)これを突破するVBA. VBAですが、たった中身は3行ですので、鵜呑みするか 勉強するなら、下記の方法で出来ます。これもあれこれやって見て、到達したプログラムで、たまたま上手く行ったわけです。 Private Sub ComboBox2_Change() a = ComboBox2.ListIndex b = Array("c2:c5", "d2:d5", "e2:e3", "f2:f6", "g2:g4") ComboBox1.ListFillRange = b(a) End Sub ComboBox2.ListIndexはコンボ2の上から何番目をクリックしたかを調べている。数値は1行目は0ですが。 b = Array(・・・)は何をしているか判りますよね。 ListFillRangeの表を定義しているわけで、Sheetで営業所管轄 地域セルが増減した時、どう変えたら良いかは、自ずと判るでしょう。その次はプログラムでListFillRangeをセットしているわけです。 コンボ2のデザインモードで8つの四角の中でダブルクリック すると、VBE画面でPrivate Sub ComboBox2_Change() EndSub が出るから、そこへ上記プログラム中身部分をコピーし貼りつけ、メニュの実行-Sub/ユーザーフォームの実行をクリックし、シートに戻って、コンボボックス2をクリックする。 コンボ1をクリックすると福岡の分が現われるはず。 そこでクリックした久留米市のような結果をセットするには コンボ1のLinkedCellにB1(セル)など入れておけばB1に 久留米市と出る。 なおデザインモードは三角定規と鉛筆の組み合わさったアイコンをクリックして、へっこんでいる状態です。
その他の回答 (1)
- nishi6
- ベストアンサー率67% (869/1280)
>私はVBAは分かりませ。他に方法がないでしょうか? エクセル技道場に、 縦横可変範囲の名前定義でリスト http://www2.odn.ne.jp/excel/waza/name.html#SEC22 があります。 入力規則を2つ使った例が示されています。難易のほどはよく分かりませんが、当然VBAではありません。 質問のようにコンボボックスを使っても可能でしょう。(セル範囲に名前をつけることで) ただ、入力規則で可能だし、わざわざコンボボックスを使ってVBAなしで作ることもないでしょう。 ご参考に。
お礼
参考URL参照しました。 有り難うございました。 ポイントは回答順番にさせていただきました。あしからず。
お礼
これから試すとろです。ご親切にありがとうございました。