![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_16.png?e8efa67)
エクセルVBAのコンボボックスの使い方について質問します。
実現したいプログラムは
「チェックボックスから選んだ数字で計算するプログラム」
です。
具体的には…
まず、コンボボックスをシート上に配置します。そのコンボボックスには
数字の1から10を選べるようにしておきます。
次に、コマンドボタンを配置します。これは単にプログラムをスタート
させる目的です。
ユーザーは、まずコンボボックスから好きな数字を選択します。
そしてスタートボタン(コマンドボタン)を押します。
すると、選んだ数字の2倍がセルに表示されます。
さらに発展系としては…
チェックボックスを4つ配置します。各チェックボックス
には、+、-、×、÷を割り振っておきます。
また、コンボボックスを2つ用意し、それぞれ1~10の数字をリストにします。
ユーザーは、チェックボックスから好きな記号を選び、さらにコンボボックスから
好きな数字を選びます。そしてスタートボタンを押すと、選んだ数字を選んだ記号
で計算した値がセルに表示されます。
というようなプログラムを考えているのですが、うまくできません。
ポイントは、
・チェックボックスにリストを入力する方法
・チェックボックスの選択状態や、リストボックスから選ばれた数字を、
変数として取得する方法
インターネットで調べているのですが、リストボックスに値を入れるのにもマクロを走らせ
なければならない方法とか、ユーザーフォームでの説明ばかりでなかなか実現に至りません。
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/v …
プログラムのイメージ図としては添付の図の通りです。
どのようにプログラムを書けばいいのでしょうか。
![「エクセルVBAでコンボボックス」の質問画像](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/f/1206245_5497cbf7c08cd/M.jpg)
No.1ベストアンサー
- 回答日時:
添付されている、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の説明されている分を読み替えて使ってみてください。
この回答への補足
回答ありがとうございます。
>Private Sub ComboBox1_Click() 'Comboboxがクリックされたときとなります。
あ、これってもしかしてコンボボックスの右側の下向き三角形を押し、リストがベローんって
出てくるときの動作ですか?
この動作でリストに入力されるということは、ユーザーから見ればあたかも初めからリストが
入っているように見えるということですね!?
もしそうであれば私が勘違いというか、早とちりしていました。
ちょっと確かめてみます。
これでできました。
お騒がせしましたが、なんてことはなかったです。
Private Sub ComboBox1_DropButtonClick()
ComboBox1.Clear
ComboBox1.AddItem "りんご"
ComboBox1.AddItem "みかん"
ComboBox1.AddItem "バナナ"
ComboBox1.AddItem "マンゴー"
End Sub
少なくともリストを表示させるためにDropButtonをクリックしなければならないので、
これでマクロが実行されたことになるのですね。
No.2
- 回答日時:
こんなのは、コントロールの練習問題の範囲内のことではないですか。
何処がわからないのか。
コマンドボタンで、コンボの値がそのとき(瞬間)の選択されている値が取られる
ボタンのクリックイベントのところにコードを書く。
>リストボックスに値を入れるのにもマクロを走らせなければならない方法
必ずしもあそうではない。エクセルらしいやり方では、プロパティの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照会を活用すべきだ。
この回答への補足
回答ありがとうございます。
リストボックスとなっているところは、コンボボックスの間違いです。すいません。
>プロパティのListFillRangeにセル範囲(例D1:D5など)を直接指定できる。
セル範囲をコンボボックスのリストとして呼び込んできたいのではなく、はじめからコンボボックスのリスト
にリスト化されていることを実現したいのです。入れたいリストはコードのほうに書きます。
コードに書いたリストをコンボボックスのリストに読み込むには、プログラムをいったん走らせなければなりません(少なくとも私の紹介したサイトはそのように書いてあると思います)。これでコンボボックスにリストが入力され、それから選択するのだと思います。
私がやりたいのは、あくまで、はじめからリスト化されている方法です。つまり、エクセルを開くとすでに
コンボボックスにリストが入っていて、好きな数字を選択し、「計算実行」ボタンを押すと計算するプログラムです。
これでできました。
お騒がせしましたが、なんてことはなかったです。
Private Sub ComboBox1_DropButtonClick()
ComboBox1.Clear
ComboBox1.AddItem "りんご"
ComboBox1.AddItem "みかん"
ComboBox1.AddItem "バナナ"
ComboBox1.AddItem "マンゴー"
End Sub
少なくともリストを表示させるためにDropButtonをクリックしなければならないので、
これでマクロが実行されたことになるのですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Accessにインポートした複数のテーブルを表示させる方法が分かりません。 1 2023/01/30 20:22
- Excel(エクセル) たくさんあるフォームコントロールを効率よく確認するには 1 2022/12/24 12:27
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Excel(エクセル) エクセルについて教えてください。 2 2023/06/14 11:11
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
- Excel(エクセル) コンボボックス及びリストボックスを5段階連動させる方法をご存知の方ご教授頂きたいです。 Excelで 3 2022/04/03 21:43
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2022/04/01 12:11
- Excel(エクセル) エクセルの散布図で新たに入力した値のデータラベルが空欄になる現象 1 2022/04/26 09:31
- Excel(エクセル) Excel2019、2021の日付、曜日の表示について 2 2022/11/29 15:01
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAでコンボボックス
-
Matlabについて質問2
-
65536は2の何乗なのでしょうか?
-
トップダウン解析とボトムアッ...
-
インテル マネジメント エンジ...
-
正しい五十音順について
-
binファイルってiphone専用です...
-
パチンコゲームを作りたいので...
-
PICマイコンのコピー(クローン...
-
携帯のパスワードについてです。
-
数値計算の高速化 (cos, sin, exp)
-
計算量の少ないn乗根の求め方
-
変化させるセルが変化しない
-
LogonUI.exe システムエラー
-
InstallShield ってプログラム...
-
javaで図形が表示されない
-
セルフイメージを高める21日...
-
あるプログラムのコマンドライ...
-
VB.NETで、プログラム上から新...
-
Excelで4096点以上のFFTの方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
変数の値が勝手に変化する原因
-
【JAVA】数字をひし形に出力す...
-
JCLの基本について教えてください
-
360度を超える角度
-
ProC 固定SQLでNULLってどう表...
-
Fortran90についての質問です。
-
fortran if文
-
3つの整数のうち奇数のみを表示...
-
ruby for文
-
c言語のプログラミング 2つの整...
-
Matlabについて質問2
-
COBOLのピリオド
-
C言語 バッファについて。
-
プログラミング(自由課題)
-
main関数終了時のreturnの意味は?
-
不具合が発生(API・C言語)
-
ロトカ=ヴォルテラ方程式 をC...
-
プログラミング
-
ループのとめ方
-
fortran77 自宅ではコンパイル...
おすすめ情報