<Excel UserFormでコンボボックスを使用してみた>
どうも、三流プログラマーのKen3です。 今回は、 Excel UserFormでコンボボックスを使用してみた そんなお話です。 サンプルファイルは、 http://www.ken3.org/vba/lzh/vba084.lzh にvba084.xlsが保存されています。/* * 1.今回のキッカケ */
http://www.ken3.org/vba/excel-form.html に設置してた、感想質問受付で、下記の質問が来ました。 --------------- >Excelのフォームで、コンボボックスを使用したいのですが、 >Accessで作るコンボボックスのような、リストの設定方法を教えてください。 > >Private Sub ComboBox1_Change() > > >End Sub --------------- ExcelのUserFormでコンボボックスを使うのかぁ。 Accessだと、クエリーやコントロールソースを使用して、 簡単に作れるのにね。 (もしかしてExcelにも私が知らないだけであったりして・・・)/* * 2.初期捜査、初動捜査 */
コンボボックスを作り、いつものように、 me.ComboBox1. と入力すると、プロパティやメソッドが表示される。 探りを入れると、 .AddItem なんて、アイテムを追加するそれっぽいのが存在する。 サンプルを見ながら、 フォームのオープン時のイベントで、 2つのコンボボックスに値をセットしてみた。 1つ目は 固定値で、クー・チョキ・パーと順番にセット。 2つ目は、 シートの値からコンボボックスを作成してみた。 A列コード B列商品名 C列単価 の複数列のデータをコンボボックスにセットしてみた。 シートのイメージは、 ↑複数列のデータをセットしたイメージ/* * 3.作成したサンプル */
フォームを開くイベントで、 コンボボックスにデータをセットした。
Private Sub UserForm_Initialize() '---------------------- 'コンボボックス1の設定 '---------------------- 'Accessで言うと連結列かな 0のインデックス番号 Me.ComboBox1.BoundColumn = 0 'フォームの初期化でコンボボックスに値を代入する Me.ComboBox1.AddItem "グー" Me.ComboBox1.AddItem "チョキ" Me.ComboBox1.AddItem "パー" '---------------------- 'コンボボックス2の設定 '---------------------- Me.ComboBox2.BoundColumn = 2 '連結はB列の商品名 Me.ComboBox2.ColumnCount = 3 '列数は3 Dim YLINE As Integer Dim setY As Integer YLINE = 2 '2行目からデータセット setY = 0 'コンボボックスは0からなので While Len(Sheets("MST").Cells(YLINE, "A")) <> 0 'A列のデータで有無をチェック '.Additemで行を追加 Me.ComboBox2.AddItem Sheets("MST").Cells(YLINE, "A") '.Listで該当列にデータをセット Me.ComboBox2.List(setY, 1) = Sheets("MST").Cells(YLINE, "B") Me.ComboBox2.List(setY, 2) = Sheets("MST").Cells(YLINE, "C") YLINE = YLINE + 1 setY = setY + 1 Wend End Sub |
Private Sub CommandButton1_Click() MsgBox "ComboBox1.text=" & Me.ComboBox1.Text 'グーなどのテキスト文字 MsgBox "ComboBox1.value=" & Me.ComboBox1.Value '値 End Sub |
Private Sub CommandButton2_Click() MsgBox "ComboBox2.text=" & Me.ComboBox2.Text 'テキスト文字 MsgBox "ComboBox2.value=" & Me.ComboBox2.Value '値 MsgBox "ComboBox2.Column(0)=" & Me.ComboBox2.Column(0) MsgBox "ComboBox2.Column(1)=" & Me.ComboBox2.Column(1) MsgBox "ComboBox2.Column(2)=" & Me.ComboBox2.Column(2) End Sub |
ここまで、読んでいただきどうもです。ここから下は、三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、
気になったジャンル↓を選択してください。 人気記事(来場者が多いTOP3): Excel関係: Access関係: その他:VBAの共通関数やテキストファイルの操作など 開発時の操作: [F1を押してHELPを見る]/ [Debug.Print と イミディエイトウインドウ]/ [実行時エラーでデバッグ]/ [ウォッチ式とSTOP]/ [参照設定を行う] 仕様書(設計書?) XXXX書類: [基本設計書や要求仕様書]/ [テスト仕様書 テストデータ]/ [バグ票]/ [関数仕様書]/ [流れは 入力・処理・出力] ※↑文章の味付けが変わっていて、お口に合うかわかりませんが。。。 |
Blogとリンク:[三流君の作業日記]/
[VBAやASPのサンプルコード]/
広告-[通販人気商品の足跡]