ユーザーフォームのリストボックスに任意の値をセットする |
ユーザーフォームの画面で、リストボックスに任意の値をセットしたいにですがどうしたらいいのでしょうか。それと、リストボックスから A:ALくらいまでの列(一列づつ)を選べるようにしたいのですがどのようにしたらいいのでしょうか。 |
普通はRowSourceプロパティを指定します。 ListBox1.RowSource = "Sheet1!A1:A10" ただしRowSourceで、指定するとlistboxが消えるまでリストの 書き換えが出来ませんので、今回の場合はadditemがいいと思 います。 > >それと、リストボックスから A:ALくらいまでの列(一列づつ)を >選べるようにしたいのですがどのようにしたらいいのでしょうか。 ユーザーフォームに、ComboBox1とListBox1の2つのコントロ ールを配置するものとして、以下のマクロを作ってみました。 Option Explicit Private Sub ComboBox1_Click() Dim myCol As String, myRow As Long Dim myRange As Range Dim i As Integer With Worksheets("Sheet1") 'Comboboxで指定したセルを myRange 変数に格納 Set myRange = .Rows("1:1").Find(what:=ComboBox1.Text) '列名を myCol 変数に格納 myCol = myRange.Address ' $AB$1 などの状態 myCol = Mid(myCol, 2, Len(myCol) - 1) '頭の$を削除 myCol = Left(myCol, InStr(myCol, "$") - 1) '中の$以下を削除 'Comboboxで指定した列の行数を取得 myRow = .Range(myCol & "65536").End(xlUp).Row 'リストボックスの内容を削除 ListBox1.Clear 'AddItemメソッドでListBoxに書き込んでいきます。 For i = 1 To myRow ListBox1.AddItem (.Range(myCol & CStr(i))) Next i End With End Sub Private Sub UserForm_Initialize() Dim i As Integer 'コンボボックスにA1セルからAL1セルまでのValueを取得 For i = 1 To Range("AL1").Column ComboBox1.AddItem (Worksheets("Sheet1").Cells(1, i).Value) Next i '起動時の初期値を設定 ComboBox1.Text = Worksheets("Sheet1").Cells(1, 1).Value End Sub |