- ベストアンサー
エクセルVBAでコンボボックスの使い方
- エクセルVBAを使用してコンボボックスの使い方について質問します。
- チェックボックスから選んだ数字で計算するプログラムを実現したいです。
- 具体的なプログラムのイメージ図を添付しています。リストボックスに値を入力する方法や、選択された数字を変数として取得する方法がわかりません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
添付されている、URLですべて説明されています。 どの部分でつまずいているのでしょうか? 数字の1から10を選べるようにしておきます。 たとえばComboboxのListの場合 Sheet2 A列に1から10まで入力してください。 Private Sub ComboBox1_Click() 'Comboboxがクリックされたときとなります。 Dim lRow As Long Dim i As Long, myCnt As Long Dim myData With Worksheets("Sheet2") lRow = .Range("A" & Rows.Count).End(xlUp).Row myData = .Range("A1:A" & lRow).Value End With With ComboBox1 .ColumnCount = 1 .List = myData End With End Sub これが呼び込みなのですが このようにFormの説明されている分を読み替えて使ってみてください。
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
こんなのは、コントロールの練習問題の範囲内のことではないですか。 何処がわからないのか。 コマンドボタンで、コンボの値がそのとき(瞬間)の選択されている値が取られる ボタンのクリックイベントのところにコードを書く。 >リストボックスに値を入れるのにもマクロを走らせなければならない方法 必ずしもあそうではない。エクセルらしいやり方では、プロパティのListFillRangeにセル範囲(例D1:D5など)を直接指定できる。 VBAでもListFillRangeに指定できるが。 >・チェックボックスにリストを入力する方法 コンボボックスかリストボックスのミスタイプでは。チェックボックスにリストとは? ーー コンボの話から後半リストボックスに話題をけたのはなぜ? ーー >・チェックボックスの選択状態や、リストボックスから選ばれた数字を、 変数として取得する方法 VBAの本や、WEB(Google)などで「VBA チェックボックス」「VBA リストボックス」で照会すれば出てくる話題でしょう。 ーー チェックボックス Private Sub CommandButton1_Click() MsgBox Worksheets("Sheet1").CheckBox1.Value End Sub ーー 下記はリストボックスで必ずどれか選択して実行すること(でないとエラーになる) Private Sub CommandButton1_Click() MsgBox Worksheets("Sheet1").ListBox1.List(Worksheets("Sheet1").ListBox1.ListIndex) End Sub ーーーー こんなところへ質問する前にWEB照会を活用すべきだ。
お礼
これでできました。 お騒がせしましたが、なんてことはなかったです。 Private Sub ComboBox1_DropButtonClick() ComboBox1.Clear ComboBox1.AddItem "りんご" ComboBox1.AddItem "みかん" ComboBox1.AddItem "バナナ" ComboBox1.AddItem "マンゴー" End Sub 少なくともリストを表示させるためにDropButtonをクリックしなければならないので、 これでマクロが実行されたことになるのですね。
補足
回答ありがとうございます。 リストボックスとなっているところは、コンボボックスの間違いです。すいません。 >プロパティのListFillRangeにセル範囲(例D1:D5など)を直接指定できる。 セル範囲をコンボボックスのリストとして呼び込んできたいのではなく、はじめからコンボボックスのリスト にリスト化されていることを実現したいのです。入れたいリストはコードのほうに書きます。 コードに書いたリストをコンボボックスのリストに読み込むには、プログラムをいったん走らせなければなりません(少なくとも私の紹介したサイトはそのように書いてあると思います)。これでコンボボックスにリストが入力され、それから選択するのだと思います。 私がやりたいのは、あくまで、はじめからリスト化されている方法です。つまり、エクセルを開くとすでに コンボボックスにリストが入っていて、好きな数字を選択し、「計算実行」ボタンを押すと計算するプログラムです。
お礼
これでできました。 お騒がせしましたが、なんてことはなかったです。 Private Sub ComboBox1_DropButtonClick() ComboBox1.Clear ComboBox1.AddItem "りんご" ComboBox1.AddItem "みかん" ComboBox1.AddItem "バナナ" ComboBox1.AddItem "マンゴー" End Sub 少なくともリストを表示させるためにDropButtonをクリックしなければならないので、 これでマクロが実行されたことになるのですね。
補足
回答ありがとうございます。 >Private Sub ComboBox1_Click() 'Comboboxがクリックされたときとなります。 あ、これってもしかしてコンボボックスの右側の下向き三角形を押し、リストがベローんって 出てくるときの動作ですか? この動作でリストに入力されるということは、ユーザーから見ればあたかも初めからリストが 入っているように見えるということですね!? もしそうであれば私が勘違いというか、早とちりしていました。 ちょっと確かめてみます。