<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 |
|
あとは、項目別にMSでお勉強かな? ◆ マイクロソフト サイトの歩き方 ◇ How-To インデックス ◇ FAQ インデックス ◇ スキルレベル別おすすめコンテンツ ◇ テクノロジ マップ ◇ テーマ別技術資料一覧 |
| ※種類が豊富で探し易いです。※在庫ありが48時間以内発送が急ぎで資料や書籍がほしい時、とても助かります。 お奨め本の目次を見るだけでも勉強になったり |