このサイトの記事内では「アフィリエイト広告」などの広告を掲載している場合があります。
消費者庁が問題としている「誇大な宣伝や表現」とならないよう配慮しコンテンツを制作しておりますのでご安心ください。
問題のある表現が見つかりましたらお問い合わせよりご一報いただけますと幸いです。

【VBA】リストボックスにシート上のデータをコピーする

今回はユーザーフォームで、リストボックスにシート上のデータをコピーする方法を紹介します。

正直、あんまり使うことはないと思うのですが、

ユーザーフォームで日付を扱いたいために、このような方法を使ったことがあります。

ユーザーフォームでユーザーに日付を入力してもらうのは結構手間なため、一旦Excelシートに書いてもらって、それをユーザーフォームにコピーさせています。

イメージはこんな風になります。

VBAが難しいと感じたら
ココナラにて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

このコピーする操作をプログラムにするとこのようになります。

  1. シート上のデータを変数へ代入
  2. リストボックスの列を2列へ変更
  3. 変数をリストボックスへ取り込む

といった流れになります。

    ' arrをリストボックスへ取り込む
    ListBox1.List = arr

ポイントはこの部分で、Excelシートのデータを一気に取り込みたい場合は、Listプロパティを使用します。

このプロパティを使用すると、配列の内容を一度にリストボックスへ代入することができます。

このプロパティを使えば、For文などで繰り返しループせずとも一気にデータの取り込みができるので、活用してみてください。

《VBA上級者になりたい人へ》
VBA上級者を目指したい人にはパーフェクトExcel VBA一択です。
この本を読み切れば間違いなくVBA上級者になれます。

created by Rinker
技術評論社
¥3,608 (2025/04/01 14:41:38時点 Amazon調べ-詳細)
VBAが難しいと感じたら
ココナラにてVBAの作成依頼を受け付けています。
ご依頼・ご相談はこちらから

VBA

Posted by やろまい