エクセルVBAユーザーフォーム
コントロールを追加します | ユーザーフォームを表示 | 割り当てマクロ | リンク#テストユーザーフォーム[テストユーザーフォーム]
この章では、Excel VBAユーザーフォームを作成する方法を教えています。ユーザーフォームは、我々は次のようにルックスを作成しようとしている。
コントロールを追加
ユーザーフォームにコントロールを追加するには、次の手順を実行します。
-
Visual Basicエディターを。プロジェクトエクスプローラが表示されていない場合、ビュー、プロジェクトエクスプローラ]をクリックします。
挿入、ユーザーフォーム]をクリックします。ツールボックスが自動的に表示されない場合、ビュー、[ツールボックス]をクリックします。画面は以下のように設定する必要があります。
以下の表に記載されているコントロールを追加します。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に、以下に示すラベルを入力して、ユーザーフォームをテストします。
結果: