<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のサンプルコード]/
広告-[通販人気商品の足跡]