【ExcelVBA】シート上に設置されたListboxの項目をクリックして選択された値をセルに表示するには

この記事では、シート上に設置されたListboxの項目をクリックして選択された値をセルに表示する方法についてご説明します。

【動画】シート上に設置されたListboxの項目をクリックして選択された値をセルに表示する実際の動き

本題に入る前に、まずは次の動画をご覧ください。


Listboxのlistプロパティに行位置と列位置を指定することでListboxの値を取得することができます。

今回は選択している行位置の各値を取得したいので、行位置にはクリックした行位置を指定しています。

クリックした行が何行目かは、ListBoxのListIndexから取得することができます。

STEP.1
Listboxのlistプロパティに、クリックした行位置と列位置を指定する
Listboxのlistプロパティに行位置と列位置を指定します。listプロパティからは、クリックした行位置の指定した列位置にある値を返します。
STEP.2
STEP.1で取得した値をセルに設定する
STEP.1で取得した値をセルに設定します。

Excelファイルの例

今回は次のExcelファイルを作成しました。

listboxのどれかの行をクリックすると、黄色のセルに各値が表示されます。

なお、黄色のセルには名前を付けています。(赤文字がセルの名前)

名前が付けられたセルを参照し、そのセルに選択されたListboxの行の各値を設定しています。

コードの例

Option Explicit

Private Sub ListBox1_Click()
                    
    With Sheets("top")
    
        .Range("no").Value = ListBox1.List(ListBox1.ListIndex, 0)
        .Range("name").Value = ListBox1.List(ListBox1.ListIndex, 1)
        .Range("empNo").Value = ListBox1.List(ListBox1.ListIndex, 2)
        .Range("age").Value = ListBox1.List(ListBox1.ListIndex, 3)
        .Range("hometown").Value = ListBox1.List(ListBox1.ListIndex, 4)
        .Range("yearOfJoining").Value = ListBox1.List(ListBox1.ListIndex, 5)
        .Range("department").Value = ListBox1.List(ListBox1.ListIndex, 6)
        .Range("position").Value = ListBox1.List(ListBox1.ListIndex, 7)
    
    End With

End Sub

注目すべきコード

見て頂きたいのは7行目から14行目です。

        .Range("no").Value = ListBox1.List(ListBox1.ListIndex, 0)
        .Range("name").Value = ListBox1.List(ListBox1.ListIndex, 1)
        .Range("empNo").Value = ListBox1.List(ListBox1.ListIndex, 2)
        .Range("age").Value = ListBox1.List(ListBox1.ListIndex, 3)
        .Range("hometown").Value = ListBox1.List(ListBox1.ListIndex, 4)
        .Range("yearOfJoining").Value = ListBox1.List(ListBox1.ListIndex, 5)
        .Range("department").Value = ListBox1.List(ListBox1.ListIndex, 6)
        .Range("position").Value = ListBox1.List(ListBox1.ListIndex, 7)

コードの説明

以上のコードは、クリックした行の各値をセルに出力しているコードです。

コードの詳細

7行目のコードは、クリックしたListboxのデータ行にある1つ目の列の値を名前がnameのセルに設定しています。

1つ目の列を指定するには、listプロパティの第2引数に0を指定します。

2列目なら1を、3列目なら2を、というように指定します。

また、クリックした行位置はListIndexプロパティから取得することができます。

このListIndexプロパティをListプロパティの第1引数に指定し、Listプロパティの第2引数に0を指定することでクリックした行の1列目の値を取得することができます。

8行目から14行目についても、Listプロパティの第1引数にListIndexプロパティを、第2引数にListboxの列位置に対応した1から7までのいずれかを指定することで選択した行の各値をセルに出力することができます。

動作確認

マクロ実行前

マクロ実行前はまだListboxの行はクリックされておらず、黄色のセルにも値が出力されていません。

マクロ実行後

Listboxの1行目をクリックすると1行目の各値が黄色のセルに出力されました。

最後に

本記事では、シート上に設置されたListboxの項目をクリックして選択された値をセルに表示する方法についてご説明しました。

シート上に設置されたListboxの項目をクリックしてその行の値をセルに表示させたい時は本記事を参考にしてみてくださいね。

プログラミングのスキルを習得するなら

プログラミングのスキルを習得したい、今のスキルをもっと高めたい、そう考えているなら「プログラミングスクール」がおすすめです。

プログラミングのスキルの基礎を身につけるなら「TechAcademy」で1週間の無料体験があるので、これで「プログラミングの基礎」を学ぶのにおすすめですよ。

→ TechAcademyの「1週間 無料体験」はこちら