/ / Excel VBAマルチコラムコンボボックス

Excel VBAマルチコラムコンボボックス

以下では、 Excel VBA ユーザーフォームを作成します。 複数列のコンボボックス.

作成するUserformは次のようになります。

Excel VBAのマルチコラムコンボボックス

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

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

2. Insert、Userformをクリックします。ツールボックスが自動的に表示されない場合は、[表示]、[ツールボックス]の順にクリックします。あなたの画面は以下のように設定する必要があります。

Excel VBAでのユーザーフォームの画面設定

3.ラベル、コンボボックス、およびコマンドボタンを追加します。 これが完了したら、その結果は前に示したUserformの画像と一致するはずです。たとえば、ツールボックスからComboBoxをクリックしてコンボボックスコントロールを作成します。次に、ユーザーフォーム上のコンボボックスをドラッグすることができます。

4。 コントロールの名前とキャプションを変更できます。名前はExcel VBAコードで使用されます。キャプションは、画面に表示されるキャプションです。コントロールの名前を変更することをお勧めしますが、ここではいくつかのコントロールしか持たないため、ここでは必要ありません。ユーザーフォーム、ラベル、およびコマンドボタンのキャプションを変更するには、[表示]、[プロパティ]ウィンドウをクリックし、各コントロールをクリックします。

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

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Sub UserForm_Initializeを作成します。ユーザーフォームにShowメソッドを使用すると、このサブが自動的に実行されます。

6. Visual Basic Editorを開きます。

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

8.左のドロップダウンリストから「ユーザーフォーム」を選択します。右のドロップダウンリストから「初期化」を選択します。

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

Private Sub UserForm_Initialize()

ComboBox1.ColumnCount = 2

Dim Films(1 To 5, 1 To 2) As String
Dim i As Integer, j As Integer

Films(1, 1) = "Lord of the Rings"
Films(2, 1) = "Speed"
Films(3, 1) = "Star Wars"
Films(4, 1) = "The Godfather"
Films(5, 1) = "Pulp Fiction"

Films(1, 2) = "Adventure"
Films(2, 2) = "Action"
Films(3, 2) = "Sci-Fi"
Films(4, 2) = "Crime"
Films(5, 2) = "Drama"

ComboBox1.List = Films

End Sub

説明: 最初のコード行は、コンボボックスの列数を2に設定します。実行時に列数を設定する代わりに、設計時にこの設定を構成することもできます。これを実現するには、コンボボックスコントロールを右クリックし、[プロパティ]をクリックしてColumnCountプロパティを2に設定します。次に、2次元配列を宣言して初期化します。最後のコード行は、配列をコンボボックスに割り当てます。

これで、Userformの最初の部分が作成されました。それはすでに素敵に見えますが、ユーザーフォームのコマンドボタンをクリックしても何も起こりません。

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

11. OKボタンをダブルクリックします。

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

Private Sub CommandButton1_Click()

Unload Me

MsgBox "You selected " & ComboBox1.Value

On Error Resume Next
MsgBox "You like " & ComboBox1.Column(1) & " movies"

End Sub

注意: これらのコード行はExcel VBAユーザーフォームを閉じ、選択したアイテムとジャンルを表示します。 "On Error Resume Next"ステートメントは、ユーザーが自分の映画を埋めたときのエラーを無視します(この場合、使用可能なジャンルはありません)。

13. [キャンセル]ボタンをダブルクリックします。

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

Private Sub CommandButton2_Click()

Unload Me

End Sub

Speedを選択してOKをクリックすると、結果が表示されます。

複数列のコンボボックスの結果

複数列のコンボボックスの結果

また読む: