エクセルVBAで複数のリストボックス選択
エクセルVBAでのMultiSelectプロパティは、ユーザーがリストボックスで複数の項目を選択することができます。ユーザーフォームは、我々は次のようにルックスを作成しようとしている。
このユーザーフォームを作成するには、次の手順を実行します。
-
Visual Basicエディターを開きます。プロジェクトエクスプローラが表示されていない場合、ビュー、プロジェクトエクスプローラ]をクリックします。
挿入、ユーザーフォーム]をクリックします。ツールボックスが自動的に表示されない場合、ビュー、[ツールボックス]をクリックします。画面は以下のように設定する必要があります。
、コマンドボタン、チェックボックス(最初の左に、右に二)(左、右の第二の最初の)リストボックスを追加します。3.最初の上部のフレームとオプションボタン(第二以下まず、など)に。これが完了すると、結果は、前に示したユーザーフォームの画像と一致している必要があります。たとえば、ツールボックスからリストボックスをクリックして、リストボックスコントロールを作成します。次に、ユーザーフォーム上のリストボックスをドラッグすることができます。あなたは「選択型」のフレームに到着すると、あなたはそれに3つのオプションボタンを配置する前に、まずこのフレームを描画することを忘れないでください。
4.名前とコントロールのキャプションを変更することができます。名前は、Excel VBAコードで使用されています。キャプションは画面に表示されるものです。コントロールの名前を変更することをお勧めですが、我々は唯一この例では、いくつかのコントロールを持っているので、それはここでは必要ではありません。ユーザーフォームのキャプションを変更するには、コマンドボタン、チェックボックス、フレームやオプションボタンは、ビュー、プロパティウィンドウをクリックして、各コントロールをクリックしてください。
、ユーザーフォームを表示するワークシート上のコマンドボタンを配置し、次のコード行を追加するには5:
Private Sub CommandButton1_Click() UserForm1.Show End Sub
私たちは今、サブUserForm_Initializeを作成しようとしています。ユーザーフォームのために、Showメソッドを使用する場合、このサブが自動的に実行されます。
-
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を交換してください。