コントロールを追加します | ユーザーフォームを表示 | 割り当てマクロ | リンク#テストユーザーフォーム[テストユーザーフォーム]

この章では、Excel VBAユーザーフォームを作成する方法を教えています。ユーザーフォームは、我々は次のようにルックスを作成しようとしている。

Excel VBA Userform

コントロールを追加

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

  1. Visual Basicエディターを。プロジェクトエクスプローラが表示されていない場合、ビュー、プロジェクトエクスプローラ]をクリックします。

挿入、ユーザーフォーム]をクリックします。ツールボックスが自動的に表示されない場合、ビュー、[ツールボックス]をクリックします。画面は以下のように設定する必要があります。

Userform Screen Setup in Excel VBA

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

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

Control

Name

Caption

Userform

DinnerPlannerUserForm

Dinner Planner

Text Box

NameTextBox

Text Box

PhoneTextBox

List Box

CityListBox

Combo Box

DinnerComboBox

Check Box

DateCheckBox1

June 13th

Check Box

DateCheckBox2

June 20th

Check Box

DateCheckBox3

June 27th

Frame

CarFrame

Car

Option Button

CarOptionButton1

Yes

Option Button

CarOptionButton2

No

Text Box

MoneyTextBox

Spin Button

MoneySpinButton

Command Button

OKButton

OK

Command Button

ClearButton

Clear

Command Button

CancelButton

Cancel

7 Labels

No need to change

Name:, Phone Number:, etc.

注:コンボボックスは、ユーザーが彼/彼女の自身の選択の項目や塗りつぶしを選択することができ、そこからドロップダウンリストです。オプションボタンの一方のみを選択することができます。

ユーザーフォームを表示

ワークシート上の/ VBAの作成・マクロ#コマンドボタン、[コマンドボタン] `と次のコード行を追加します:ユーザーフォームを表示するには、`リンクを配置

Private Sub CommandButton1_Click()

DinnerPlannerUserForm.Show

End Sub

私たちは今、サブUserForm_Initializeを作成しようとしています。ユーザーフォームのために、Showメソッドを使用する場合、このサブが自動的に実行されます。

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

3.左側のドロップダウンリストからユーザーフォームを選択してください。右のドロップダウンリストから[Initialize]を選択してください。

次のコード行を追加します。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

説明:テキストボックスは、チェックボックス等、未チェックされている、リストボックスやコンボボックスが満たされ、空にされている

割り当てマクロ

私たちは今、ユーザーフォームの最初の部分を作成しました。それはすでにきちんと見えますが、我々はユーザーフォーム上のコマンドボタンをクリックすると、まだ何も起こりません。

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

3.ダブルマネースピンボタンをクリックしてください。

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

説明:最初に、私たちは、シート1をアクティブにします。次に、我々はemptyRowを決定します。変数emptyRowは、最初の空の行であり、レコードが追加されるたびに増加します。最後に、我々はemptyRowの特定の列にユーザーフォームから情報を転送します。

7.ダブルクリア]ボタンをクリックしてください。

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

Private Sub ClearButton_Click()

Call UserForm_Initialize

End Sub

説明:あなたはクリアボタンをクリックしたときに、このコード行は、サブUserForm_Initializeを呼び出します。

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

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

Private Sub CancelButton_Click()

Unload Me

End Sub

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

テストユーザーフォーム

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

結果:

Test the Userform