/ /複数のページを持つExcel VBAユーザーフォーム

複数ページのExcel VBAユーザーフォーム

以下では、複数のページを含むUserformを作成するExcel VBAのプログラムを見ていきます。このユーザーフォームには画像も含まれています。

複数ページコントロールには2ページあります。 1ページ目で、ユーザーは個人情報を記入することができます。 2ページ目では、ユーザーは最も好きな絵を指定できます。

ユーザーフォームPage 1
ユーザーフォームPage 2

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

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

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

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

3。 マルチページコントロール、ラベル、テキストボックス(最初は最初、2番目は2番目)、フレーム、オプションボタン(最初は左、2番目は右)、リストボックス、イメージコントロール、コマンドボタンを追加します。これが完了したら、その結果は前に示した空のユーザーフォームと一致するはずです。たとえば、ツールボックスから[マルチページ]をクリックして、マルチページコントロールを作成します。次に、UserformのMultipageコントロールをドラッグすることができます。ジェンダーフレームに到着したら、このフレームを最初に描画してから、2つのオプションボタンを配置してください。

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()

With ListBox1
    .AddItem "Mountains"
    .AddItem "Sunset"
    .AddItem "Beach"
    .AddItem "Winter"
End With

End Sub

説明:2ページ目のリストボックスがいっぱいになります。

これで、Userformの最初の部分が作成されました。それは既に素敵に見えますが、リストボックスから項目を選択したとき、または[OK]ボタンをクリックしたときには何も起こりません。

10.画像(このページの右側)をダウンロードして「C:test」に追加します。

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

12.リストボックスをダブルクリックします。

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

Private Sub ListBox1_Click()

If ListBox1.ListIndex = 0 Then
    Image1.Picture = LoadPicture("C:testMountains.jpg")
End If

If ListBox1.ListIndex = 1 Then
    Image1.Picture = LoadPicture("C:testSunset.jpg")
End If

If ListBox1.ListIndex = 2 Then
    Image1.Picture = LoadPicture("C:testBeach.jpg")
End If

If ListBox1.ListIndex = 3 Then
    Image1.Picture = LoadPicture("C:testWinter.jpg")
End If

End Sub

説明:これらのコード行は、リストボックス内の選択した項目に応じて画像をロードします。

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

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

Private Sub CommandButton1_Click()

Dim emptyRow As Long

"Make Sheet1 active
Sheet1.Activate

"Determine emptyRow
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1

"Transfer information
Cells(emptyRow, 1).Value = TextBox1.Value
Cells(emptyRow, 2).Value = TextBox2.Value

If OptionButton1.Value = True Then
    Cells(emptyRow, 3).Value = "Male"
Else
    Cells(emptyRow, 3).Value = "Female"
End If

Cells(emptyRow, 4).Value = ListBox1.Value

"Close Userform
Unload Me

End Sub

説明:まず、Sheet1を有効にします。 次に、emptyRowを決定します。変数emptyRowは最初の空の行で、レコードが追加されるたびに増加します。次に、ユーザーフォームの情報をemptyRowの特定の列に転送します。最後に、ユーザーフォームを閉じます。

16. Visual Basic Editorを終了し、下に示すラベルを行1に入力し、ユーザーフォームをテストします。

結果:

ユーザーフォームのテスト

また読む: