/ / Excel VBAユーザーフォーム

Excel VBAユーザーフォーム

コントロールを追加する | ユーザーフォームを表示する | マクロを割り当てる | ユーザーフォームのテスト

この章では、 Excel VBAユーザーフォーム。作成するUserformは次のようになります。

Excel VBAユーザーフォーム

コントロールを追加する

ユーザーフォームにコントロールを追加するには、以下の手順を実行します。

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

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

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

3.下の表に示すコントロールを追加します。 これが完了したら、その結果は前に示したUserformの画像と一致するはずです。たとえば、ツールボックスからテキストボックスをクリックしてテキストボックスコントロールを作成します。次に、ユーザーフォーム上のテキストボックスをドラッグすることができます。車のフレームに到着したら、まず2つのオプションボタンを配置する前にこのフレームを描画してください。

4。 下の表に従って、コントロールの名前とキャプションを変更します。名前はExcel VBAコードで使用されます。キャプションは、画面に表示されるキャプションです。コントロールの名前を変更することをお勧めします。これにより、コードを読みやすくなります。コントロールの名前とキャプションを変更するには、[表示] - [プロパティ]ウィンドウをクリックし、各コントロールをクリックします。

コントロール キャプション
ユーザーフォーム DinnerPlannerUserForm ディナープランナー
テキストボックス NameTextBox
テキストボックス PhoneTextBox
リストボックス CityListBox
コンボボックス DinnerComboBox
チェックボックス DateCheckBox1 6月13日
チェックボックス DateCheckBox2 6月20日
チェックボックス DateCheckBox3 6月27日
フレーム CarFrame
オプションボタン CarOptionButton1 はい
オプションボタン CarOptionButton2 いいえ
テキストボックス MoneyTextBox
スピンボタン MoneySpinButton
コマンドボタン OKButton OK
コマンドボタン ClearButton クリア
コマンドボタン CancelButton キャンセル
7ラベル 変更する必要はありません 名前:、電話番号:など

注:コンボボックスは、ユーザーがアイテムを選択したり、自分で選択したりできるドロップダウンリストです。オプションボタンは1つだけ選択できます。

ユーザーフォームを表示する

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

Private Sub CommandButton1_Click()

DinnerPlannerUserForm.Show

End Sub

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

1. Visual Basic Editorを開きます。

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

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

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

Private Sub UserForm_Initialize()

"Empty NameTextBox
NameTextBox.Value = ""

"Empty PhoneTextBox
PhoneTextBox.Value = ""

"Empty CityListBox
CityListBox.Clear

"Fill CityListBox
With CityListBox
    .AddItem "San Francisco"
    .AddItem "Oakland"
    .AddItem "Richmond"
End With

"Empty DinnerComboBox
DinnerComboBox.Clear

"Fill DinnerComboBox
With DinnerComboBox
    .AddItem "Italian"
    .AddItem "Chinese"
    .AddItem "Frites and Meat"
End With

"Uncheck DataCheckBoxes

DateCheckBox1.Value = False
DateCheckBox2.Value = False
DateCheckBox3.Value = False

"Set no car as default
CarOptionButton2.Value = True

"Empty MoneyTextBox
MoneyTextBox.Value = ""

"Set Focus on NameTextBox
NameTextBox.SetFocus

End Sub

説明:テキストボックスが空になり、リストボックスとコンボボックスが埋められ、チェックボックスがオフになっています。

マクロを割り当てる

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

1. Visual Basic Editorを開きます。

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

3. Moneyのスピンボタンをダブルクリックします。

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

Private Sub MoneySpinButton_Change()

MoneyTextBox.Text = MoneySpinButton.Value

End Sub

説明:このコード行は、スピンボタンを使用するとテキストボックスを更新します。

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

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

Private Sub OKButton_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 = NameTextBox.Value
Cells(emptyRow, 2).Value = PhoneTextBox.Value
Cells(emptyRow, 3).Value = CityListBox.Value
Cells(emptyRow, 4).Value = DinnerComboBox.Value

If DateCheckBox1.Value = True Then Cells(emptyRow, 5).Value = DateCheckBox1.Caption

If DateCheckBox2.Value = True Then Cells(emptyRow, 5).Value = Cells(emptyRow, 5).Value & " " & DateCheckBox2.Caption

If DateCheckBox3.Value = True Then Cells(emptyRow, 5).Value = Cells(emptyRow, 5).Value & " " & DateCheckBox3.Caption

If CarOptionButton1.Value = True Then
    Cells(emptyRow, 6).Value = "Yes"
Else
    Cells(emptyRow, 6).Value = "No"
End If

Cells(emptyRow, 7).Value = MoneyTextBox.Value

End Sub

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

7. [クリア]ボタンをダブルクリックします。

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

Private Sub ClearButton_Click()

Call UserForm_Initialize

End Sub

説明:このコード行は、Clearボタンをクリックすると、Sub UserForm_Initializeを呼び出します。

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

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

Private Sub CancelButton_Click()

Unload Me

End Sub

説明:このコード行は、「キャンセル」ボタンをクリックすると、ユーザーフォームを閉じます。

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

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

結果:

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

また読む: