【Excel】エクセル VBA編 ユーザーフォームの表示・作成・使い方

 

 

この章では、Excel VBAユーザーフォームの作成方法について説明します。

 

 

 

ユーザーフォームとは??

「ユーザーフォーム」というのは、Excelの「ツール」メニューの「オプション」を選択すると表示される、固定ダイアログと言われる種類のフォームウィンドウを自由にデザインして作成し表示利用できる機能。

「入力画面」としたり、一括処理の起動条件の「指定画面」としてマクロ上で利用します。但し、「入力画面」としては、ワークシート自体が本来は入力画面なので機能としては重複しており、この要件では必須となるものではないという考え方もあると思います。

これから作成するユーザーフォームは次のようになります。

Excel VBAユーザーフォーム

コントロールを追加する

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

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

2.挿入、ユーザーフォームをクリックします。ツールボックスが自動的に表示されない場合は、[表示]、[ツールボックス]の順にクリックします。画面は以下のように設定されているはずです。

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

3.以下の表にリストされているコントロールを追加します。

これが完了すると、結果は前述のユーザーフォームの図と一致するはずです。

たとえば、ツールボックスからTextBoxをクリックしてテキストボックスコントロールを作成します。次に、ユーザーフォーム上のテキストボックスをドラッグできます。Carフレームに到着したら、2つのオプションボタンを配置する前にこのフレームを最初に描くことを忘れないでください。

 

4.以下の表に従って、コントロールの名前とキャプションを変更します。

名前はExcel VBAコードで使用されます。キャプションは画面に表示されるものです。コントロールの名前を変更することをお勧めします。これにより、コードが読みやすくなります。

コントロールの名前とキャプションを変更するには、[表示]、[プロパティウィンドウ]の順にクリックし、各コントロールをクリックします。

 

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

 

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

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

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

プライベート Sub CommandButton1_Click()

DinnerPlannerUserForm.Show 

End Sub

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

1. Visual Basic Editorを開きます。

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

3.左側のドロップダウンリストから[Userform]を選択します。右側のドロップダウンリストから[Initialize]を選択します。

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

Private Sub UserForm_Initialize()

‘空のNameTextBox
NameTextBox.Value = “” 

‘空のPhoneTextBox
PhoneTextBox.Value = “” 

‘空のCityListBox
CityListBox.Clear 

‘ CityListBox 
 CityListBoxを
    追加します
    。AddItem “Oakland” 
    .AddItem “Richmond” 
終了 すると

「空DinnerComboBox
DinnerComboBox.Clear 

」DinnerComboBoxを記入
して DinnerComboBox 
    .AddItem 『イタリア』
    .AddItem 『中国』
    .AddItem 『Fritesと肉』
エンド 

「のチェックを外しDataCheckBoxes

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

‘デフォルトとして車を設定しない
CarOptionButton2.Value = True 

‘空のMoneyTextBox
MoneyTextBox.Value = “” 

フォーカスをNameTextBoxに設定
NameTextBox.SetFocus 

End Sub

説明:テキストボックスが空になった、リストボックスとコンボボックスがいっぱいになった、チェックボックスがオフになっている、などです。

マクロを割り当てる

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

1. Visual Basic Editorを開きます。

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

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

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

プライベート サブ MoneySpinButton_Change()

MoneyTextBox.Text = MoneySpinButton.Value 

End Sub

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

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

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

プライベート サブ OKButton_Click()

薄暗い emptyRow として ロングは、

‘Sheet1のアクティブにします
Sheet1.Activate 

決定emptyRow’
+ 1:emptyRow = WorksheetFunction.CountA()範囲( “A A”)

「転送情報の
細胞(emptyRow、1).Valueの= NameTextBox。値の
細胞(emptyRow、2).Valueの= PhoneTextBox.Value 
細胞(emptyRow、3).Valueの= CityListBox.Value 
細胞(emptyRow、4).Valueの= DinnerComboBox.Value 

場合 DateCheckBox1.Value = Trueの 次に細胞(emptyRow、5) .Value = DateCheckBox1.Caption 

If DateCheckBox2.Value = True その後細胞(emptyRow、5).Valueの=細胞(emptyRow、5).Valueの& “” &DateCheckBox2.Caption 

場合 DateCheckBox3.Value = Trueの 次に細胞(emptyRow、5).Valueの=細胞(emptyRow、5).Valueの& ” “&DateCheckBox3.Caption 

もし CarOptionButton1.Value =  その後
    細胞(emptyRow、6).Valueの= “はい” 
エルス
    細胞(emptyRow、6).Valueの= “いいえ” 
終了 した場合

細胞(emptyRow、7).Valueの= MoneyTextBox。値

終了 サブ

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

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

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

Private Sub ClearButton_Click()UserForm_Initialize End Subを

呼び出します。

説明:このコード行は、「消去」ボタンをクリックしたときにSub UserForm_Initializeを呼び出します。

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

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

プライベート サブキャンセルCancelButton_Click()

アンロードミー

エンド サブ

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

 

 

ユーザーフォームをテストする

Visual Basic Editorを終了し、以下のラベルを1行目に入力してUserformをテストします。

結果:

ユーザーフォームをテストする

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です