Excel VBAマルチコラムコンボボックス
以下では、 Excel VBA ユーザーフォームを作成します。 複数列のコンボボックス.
作成するUserformは次のようになります。
このユーザーフォームを作成するには、次の手順を実行します。
1. Visual Basic Editorを開きます。プロジェクトエクスプローラが表示されていない場合は、[表示]、[プロジェクトエクスプローラ]をクリックします。
2. Insert、Userformをクリックします。ツールボックスが自動的に表示されない場合は、[表示]、[ツールボックス]の順にクリックします。あなたの画面は以下のように設定する必要があります。
3.ラベル、コンボボックス、およびコマンドボタンを追加します。 これが完了したら、その結果は前に示したUserformの画像と一致するはずです。たとえば、ツールボックスからComboBoxをクリックしてコンボボックスコントロールを作成します。次に、ユーザーフォーム上のコンボボックスをドラッグすることができます。
4。 コントロールの名前とキャプションを変更できます。名前はExcel VBAコードで使用されます。キャプションは、画面に表示されるキャプションです。コントロールの名前を変更することをお勧めしますが、ここではいくつかのコントロールしか持たないため、ここでは必要ありません。ユーザーフォーム、ラベル、およびコマンドボタンのキャプションを変更するには、[表示]、[プロパティ]ウィンドウをクリックし、各コントロールをクリックします。
5.ユーザーフォームを表示するために、ワークシートにコマンドボタンを配置し、次のコード行を追加します。
UserForm1.Show
End Sub
Sub UserForm_Initializeを作成します。ユーザーフォームにShowメソッドを使用すると、このサブが自動的に実行されます。
6. Visual Basic Editorを開きます。
7.プロジェクトエクスプローラでUserForm1を右クリックし、コードの表示を次にクリックします。
8.左のドロップダウンリストから「ユーザーフォーム」を選択します。右のドロップダウンリストから「初期化」を選択します。
9.次のコード行を追加します。
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.次のコード行を追加します。
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.次のコード行を追加します。
Unload Me
End Sub
Speedを選択してOKをクリックすると、結果が表示されます。