大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAのリストボックスで、複数の行を選択するには、プロパティの「SelectMulti」を設定します。複数選択した値を取得するには、すべての行をループして、「.Selected」で条件分岐して、値を取得するという感じです。リストボックスを実務で活用して、業務を効率化していきましょう。

はじめに

この記事では、リストボックスで、複数の行を選択して、値を取得する方法について、ご紹介します。

リストボックスで複数選択したい場合は、プロパティで「SelectMulti」のところを設定します。

設定する方法は、2つあって、

  • 「fmMultiSelectMulti」・・・クリックで選択
  • 「fmMultiSelectExtended」・・・Windowsと同じ操作

という感じです。

選択されているかを判定する場合は、「.Selected」を使います。

選択されている値を取得したい場合は、行をループして「.Selected」で条件分岐して、値を取得するという感じです。

リストボックスの操作について、マスターしていきましょう。

では、リストボックスで、複数の行を選択して、値を取得する方法について、解説していきます。

この記事を読むメリット

  • リストボックスの行を複数選択して、選択した値を操作することができます。

目次から見たい項目へ移動すると便利ですよ。

目次

リストボックスのリストを複数選択する

リストボックスのリストを複数選択するには、プロパティの「MultiSelect」を設定します。

複数選択する設定は、次の2つがあります。

  • 「fmMultiSelectMulti」・・・クリックで選択
  • 「fmMultiSelectExtended」・・・Windowsと同じ操作

では、それぞれ設定して、操作をみてみましょう。

「fmMultiSelectMulti」を使う

まずは、プロパティの「MultiSelect」に「fmMultiSelectMulti」を設定してみます。

「fmMultiSelectMulti」に設定

「MultiSelect」のところを、「fmMultiSelectMulti」に設定します

複数の行を選択してみます。

複数を選択する

クリックで選択します。

クリックで選択します

別の行をクリックすると、複数の行を選択できます。

別の行をクリックすると、複数の行を選択できます

クリックで、複数の行を選択できます。

クリックで、複数の行を選択できます

こんな感じで、複数の行を選択することができます。

選択を解除する

解除するときは、選択済みの行をクリックです。

解除するときは、選択済みの行をクリックです

選択済みの行をクリックで解除します。

選択済みの行をクリックで解除します

すべて解除するには、選択行をすべてクリックしていきます。

すべて解除するには、選択行をすべてクリックしていきます

こんな感じで、1つずつクリックして、選択を解除します。

「fmMultiSelectExtended」を使う

次は、プロパティの「MultiSelect」に、「fmMultiSelectExtended」を設定してみます。

「fmMultiSelectExtended」に設定

「MultiSelect」の設定で、「fumMultiSelectExtended」を選択します

複数の行を選択してみます。

複数行を選択

クリックで選択します。

クリックで選択します

Ctrlを押しながらクリックすると、複数行を選択できます。

Ctrlを押しながらクリックすると、複数行を選択できます

Ctrlを押しながらクリックして、複数行を選択します。

Ctrlを押しながらクリックして、複数行を選択します

こんな感じで、Windowsと同じような操作で、複数の行を選択することができます。

選択を解除する場合は、クリックのみをすると解除することができます。

複数行の選択を解除

クリックすると、1つのみ選択することができます

クリックのみをすると、1つの行のみ選択されて、他は解除されます。

Shiftを押しながらクリックすると、連続した複数行を選択できます。

連続した複数行を選択

Shiftを押しながらクリックすると、連続した複数行を選択できます

Shiftを押しながらクリックすると、連続した複数行を選択できました。

Windowsと同じ操作ですね。

設定は、好きな方を選択するといいです。

選択した行の判定をする

選択した行の判定をしてみます。

「Selected」を使う

選択しているかの判定は、「Selected」を使うとできます。

Selectedの引数には、0行目から始まる行番号を入力します。

Private Sub CommandButton1_Click()

  Debug.Print ListBox1.Selected(0) '0行目の選択を判定
  Debug.Print ListBox1.Selected(1) '1行目の選択を判定
  Debug.Print ListBox1.Selected(2) '2行目の選択を判定
  Debug.Print ListBox1.Selected(3) '3行目の選択を判定
  Debug.Print ListBox1.Selected(4) '4行目の選択を判定

End Sub

すべての行をループして、確認することもできます。

Private Sub CommandButton1_Click()

  'すべての行をループ
  For i = 0 To ListBox1.ListCount - 1
    '選択の判定
    Debug.Print ListBox1.Selected(i)
  Next

End Sub

行数を取得する「.ListCount」を使って、0行目から始まるので「.ListCount - 1」とします。

複数行を選択しておきます。

複数行を選択する

複数行を選択しておきます

ボタンをクリックして、実行してみます。

選択した行は「True」となる

選択した行は、「True」となります

選択した行は、「True」となりました。

こんな感じで、「.Selected」を使って選択の判定ができます。

複数選択したリストの値を取得する

複数選択したリストの値を取得してみます。

「Selected」で条件分岐する

やり方としては、すべての行をループして、「Selected」で条件分岐して、値を取得するという感じです。

Private Sub CommandButton1_Click()

  'すべての行をループ
  For i = 0 To ListBox1.ListCount - 1
    '選択されている場合
    If ListBox1.Selected(i) Then
      'リストの値を取得
      Debug.Print ListBox1.List(i, 0)
    End If
  Next

End Sub

複数行を選択しておきます。

複数行を選択する

複数行を選択しておきます

実行すると、選択した行の値を取得できます。

選択した値を取得できた

選択した行の値を取得できました

選択した行の値を取得できました。

複数選択したリストをシートに入力する

ちょっと応用で、複数選択したリストをシートに入力する、というのをやってみます。

VBAコード

ユーザーフォームを立ち上げた際に、初期値を設定するVBAコードです。

Private Sub UserForm_Initialize()
  
  ListBox1.ColumnCount = 3 '列数
  ListBox1.List = Range("A2:C6").Value 'リストを作成
  
End Sub

選択された値をシートに入力するVBAコードで、ボタンに登録してあります。

Private Sub CommandButton1_Click()
  
  k = 1
  For i = 0 To ListBox1.ListCount - 1
    If ListBox1.Selected(i) Then
      k = k + 1
      Cells(k, "E") = ListBox1.List(i, 0) '商品
      Cells(k, "F") = ListBox1.List(i, 1) '価格
      Cells(k, "G") = ListBox1.List(i, 2) '数量
    End If
  Next
  
End Sub

では、実行してみます。

実行した結果

まずは、ユーザーフォームを開いて、複数行を選択しておきます。

ユーザーフォームを開いて、複数行を選択

ユーザーフォームを開いて、リストを作成します。

ユーザーフォームを開いて、リストを作成します

複数行を選択します。

複数行を選択します

ボタンクリックで、選択した値をシートに入力できます。

選択した値をシートに入力できた

ボタンクリックで、選択した値をシートに入力できました

ボタンクリックで、選択した値をシートに入力できました。

こんな感じで、選択した値に対して操作したい場合は、「.Selected」を使います。

おわりに

この記事では、リストボックスで、複数の行を選択して、値を取得する方法について、ご紹介しました。

リストボックスで複数選択したい場合は、プロパティで「SelectMulti」のところを設定します。

設定する方法は、2つあって、

  • 「fmMultiSelectMulti」・・・クリックで選択
  • 「fmMultiSelectExtended」・・・Windowsと同じ操作

という感じです。

選択されているかを判定する場合は、「.Selected」を使います。

選択されている値を取得したい場合は、行をループして「.Selected」で条件分岐して、値を取得するという感じです。

リストボックスの操作について、マスターしていきましょう。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

サイト内を検索する

↓キーワードを入力する

アーカイブから探す