【VBA】リストボックスにシート上のデータをコピーする
今回はユーザーフォームで、リストボックスにシート上のデータをコピーする方法を紹介します。
正直、あんまり使うことはないと思うのですが、
ユーザーフォームで日付を扱いたいために、このような方法を使ったことがあります。
ユーザーフォームでユーザーに日付を入力してもらうのは結構手間なため、一旦Excelシートに書いてもらって、それをユーザーフォームにコピーさせています。

イメージはこんな風になります。
リストボックスにシート上のデータをコピーするプログラム

Excelシートにこのような候補日が羅列されていて、これをユーザーフォームのリストボックスに取り込むプログラムをサンプルとしてお見せします。

ユーザーフォーム側はこのようなデザインで、リストボックスとボタンを用意します。
ボタンを押すと、Excelシート上のデータをリストボックスへコピーします。
Private Sub CommandButton1_Click()
' ボタンをクリックするとExcelシートのデータをリストボックスへ取り込む
' シート上のデータを変数へ代入
Dim arr
arr = ActiveSheet.Range("A2:B8").Value
' リストボックスの列を2列へ変更(Excelシートが2列のため)
ListBox1.ColumnCount = 2
' arrをリストボックスへ取り込む
ListBox1.List = arr
End Sub
このコピーする操作をプログラムにするとこのようになります。
- シート上のデータを変数へ代入
- リストボックスの列を2列へ変更
- 変数をリストボックスへ取り込む
といった流れになります。
' arrをリストボックスへ取り込む
ListBox1.List = arr
ポイントはこの部分で、Excelシートのデータを一気に取り込みたい場合は、Listプロパティを使用します。
このプロパティを使用すると、配列の内容を一度にリストボックスへ代入することができます。
このプロパティを使えば、For文などで繰り返しループせずとも一気にデータの取り込みができるので、活用してみてください。