◆◆MS-Excel2000スキルアップ講座/VBA編◆◆

ユーザーフォームのリストボックスに任意の値をセットする
ユーザーフォームの画面で、リストボックスに任意の値をセットしたいにですがどうしたらいいのでしょうか。それと、リストボックスから 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