エクセルVBAでのMultiSelectプロパティは、ユーザーがリストボックスで複数の項目を選択することができます。ユーザーフォームは、我々は次のようにルックスを作成しようとしている。

Multiple List Box Selections in Excel VBA

このユーザーフォームを作成するには、次の手順を実行します。

  1. Visual Basicエディターを開きます。プロジェクトエクスプローラが表示されていない場合、ビュー、プロジェクトエクスプローラ]をクリックします。

挿入、ユーザーフォーム]をクリックします。ツールボックスが自動的に表示されない場合、ビュー、[ツールボックス]をクリックします。画面は以下のように設定する必要があります。

Userform Screen Setup in Excel VBA

、コマンドボタン、チェックボックス(最初の左に、右に二)(左、右の第二の最初の)リストボックスを追加します。3.最初の上部のフレームとオプションボタン(第二以下まず、など)に。これが完了すると、結果は、前に示したユーザーフォームの画像と一致している必要があります。たとえば、ツールボックスからリストボックスをクリックして、リストボックスコントロールを作成します。次に、ユーザーフォーム上のリストボックスをドラッグすることができます。あなたは「選択型」のフレームに到着すると、あなたはそれに3つのオプションボタンを配置する前に、まずこのフレームを描画することを忘れないでください。

4.名前とコントロールのキャプションを変更することができます。名前は、Excel VBAコードで使用されています。キャプションは画面に表示されるものです。コントロールの名前を変更することをお勧めですが、我々は唯一この例では、いくつかのコントロールを持っているので、それはここでは必要ではありません。ユーザーフォームのキャプションを変更するには、コマンドボタン、チェックボックス、フレームやオプションボタンは、ビュー、プロパティウィンドウをクリックして、各コントロールをクリックしてください。

、ユーザーフォームを表示するワークシート上のコマンドボタンを配置し、次のコード行を追加するには5:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

私たちは今、サブUserForm_Initializeを作成しようとしています。ユーザーフォームのために、Showメソッドを使用する場合、このサブが自動的に実行されます。

  1. Visual Basicエディターを開きます。

7.プロジェクトエクスプローラでは、右のUserForm1をクリックし、[コードの表示]をクリックします。

まずは、Integer型の変数iを宣言します。 (コードの先頭で)一般宣言セクションで変数を宣言します。この方法は、あなたは一度だけの変数を宣言するために持っていて、複数の潜水艦でそれらを使用することができます。

Dim i As Integer

9.左のドロップダウンリストからユーザーフォームを選択してください。右のドロップダウンリストから[Initialize]を選択してください。

10.次のコード行を追加します。

Private Sub UserForm_Initialize()

With ListBox1

.AddItem "Sales"

.AddItem "Production"

.AddItem "Logistics"

.AddItem "Human Resources"

End With

OptionButton3.Value = True

End Sub

説明:最初のリストボックスがいっぱいになり、第三のオプションボタンがデフォルトとして設定されています。

私たちは今、ユーザーフォームの最初の部分を作成しました。それはすでにきちんと見えますが、我々はコマンドボタンまたは他のコントロールをクリックすると、まだ何も起こりません。

11のプロジェクトエクスプローラ、UserForm1でダブルクリックします。

12.ダブルは、[追加]ボタンをクリックしてください。

13.次のコード行を追加します。

Private Sub CommandButton1_Click()

For i = 0 To ListBox1.ListCount - 1

If ListBox1.Selected(i) = True Then ListBox2.AddItem ListBox1.List(i)

Next i

End Sub

説明:選択した場合のExcel VBAは、最初のリストボックス(リストの最初の項目のためのゼロのリストのインデックス番号(0))を介してループし、2番目のリストボックスに項目を追加します。

14.ダブル削除]ボタンをクリックしてください。

15.次のコード行を追加します。

Private Sub CommandButton2_Click()

Dim counter As Integer

counter = 0

For i = 0 To ListBox2.ListCount - 1

If ListBox2.Selected(i - counter) Then

ListBox2.RemoveItem (i - counter)

counter = counter + 1

End If

Next i

CheckBox2.Value = False

End Sub

説明:ExcelのVBAは、2番目のリストボックスをループし、選択された場合は、項目を削除します。カウンタ変数は削除された項目の数のトラックを保持しています。

16.ダブルは最初のオプションボタンをクリックします。

17.次のコード行を追加します。

Private Sub OptionButton1_Click()

ListBox1.MultiSelect = 0

ListBox2.MultiSelect = 0

End Sub

18.ダブルは2番目のオプションボタンをクリックします。

19.次のコード行を追加します。

Private Sub OptionButton2_Click()

ListBox1.MultiSelect = 1

ListBox2.MultiSelect = 1

End Sub

20.ダブル番目のオプションボタンをクリックします。

21.次のコード行を追加します。

Private Sub OptionButton3_Click()

ListBox1.MultiSelect = 2

ListBox2.MultiSelect = 2

End Sub

説明:「選択タイプ」設定は、オプションボタンをクリックして選択することができます。先に示したユーザーフォームの画像は、各設定の説明を与えます。代わりに、実行時にこの設定を構成するので、あなたはまた、設計時にこの設定を構成することができます。リストボックスコントロールにこの、マウスの右クリックを達成し、[プロパティをクリックします。 fmMultiSelectSingle、1 – – fmMultiSelectMultiまたは2 – fmMultiSelectExtented 0にMultiSelectプロパティを設定します。

22.ダブルは最初のチェックボックスをクリックしてください。

23.次のコード行を追加します。

Private Sub CheckBox1_Click()

If CheckBox1.Value = True Then

For i = 0 To ListBox1.ListCount - 1

ListBox1.Selected(i) = True

Next i

End If

If CheckBox1.Value = False Then

For i = 0 To ListBox1.ListCount - 1

ListBox1.Selected(i) = False

Next i

End If

End Sub

説明:最初のチェックボックスをオンにして、最初のリストボックスのすべての項目を選択することができます/選択解除。

24.ダブルは同じコード行を追加するには、第2チェックボックスをクリックしてください。

のみListBox2とCheckBox2とListBox1がでCheckBox1を交換してください。