訪問して頂きありがとうございます。まさふくろーです。
今回は、ユーザーフォームの作り方をご紹介します。
動作イメージ
①入力フォーム起動ボタンをクリック
②入力フォーム起動
③文字を入力
④登録ボタンクリック
⑤シートに反映
目次
シートにボタンを設置する
ボタンコントロールを選択します。
①「開発」タブをクリック⇒②「挿入」ボタンをクリック⇒フォームコントロールグループから③「ボタン」を選択。
シートにボタンを設置します。
シートにフォーカスを移動すると、ポインターが「+」の状態になります。
この状態で、左クリックを押したままズルズルっとマウスを移動すると、四角い枠ができます。
左クリックから手を離すと、「マクロの登録」画面が起動します。
マクロ名を「入力フォーム起動_Click」と入力します。
「新規作成」ボタンをクリックします。
すると、Visual Basic Editor(VBE)と呼ばれる画面が起動し、先ほど入力したマクロ名が反映されます。(赤枠)
Visual Basic Editor(VBE)を最小化(赤枠)し、エクセルのほうを表示するとボタンが設置された状態になります。
ボタンの名前を変更します。
ボタンが選択された状態で、右クリック⇒「テキストの編集」を選択します。
すると、「ボタン」の中が入力できるようになるので、「ボタン1」という文字を消して、「入力フォーム起動」と入力します。
入力フォームを作成する(ユーザーフォーム作成)
Visual Basic Editor(VBE)を起動します。
①「開発」タブをクリック⇒②「Visual Basic」を選択。
ユーザーフォームを作成します。
①「VBAProject(Book1)」を選択し、右クリック⇒②「挿入」を選択⇒③「ユーザーフォーム」を選択し、ユーザーフォームを作成。
入力フォームを作成する(テキストボックス配置)
入力項目を作成します。
①「表示」タブをクリック⇒②「ツールボックス」を選択。
ツールボックスから「テキストボックス」を選択。
フォームにフォーカスを移動すると、ポインターが「+」の状態になります。
この状態で、左クリックを押したままズルズルっとマウスを移動すると、四角い枠ができます。
左クリックから手を離すと、入力項目が出来上がります。
オブジェクト名を変更します。
①「表示」タブをクリック⇒②「プロパティウィンドウ」を選択。
プロパティウィンドウが表示されます。
オブジェクト名を「TextBox1」から「txt氏名」に変更。「オブジェクト名」欄は直接入力できます。
また、オブジェクト名は「TextBox1」のままでも構いませんが、どの項目なのかをわかりやすくするために変更します。
入力フォームを作成する(ボタン配置)
登録ボタンを作成します。
ツールボックスから「コマンドボタン」を選択。
テキストボックスの配置と同じ要領で、ボタンを配置します。
プロパティウィンドウを表示し、①オブジェクト名を「CommandButton1」⇒「cmd登録」に、②Captionを「CommandButton1」⇒「登録」に変更。
閉じるボタンを作成します。
登録ボタンと同じ要領で、閉じるボタンを作成します。
オブジェクト名を「CommandButton1」⇒「cmd閉じる」、Captionを「CommandButton1」⇒「閉じる」に変更。
VBAコードを作成します。
上記で作成した「登録」ボタン、「閉じる」ボタン、エクセルシート上に配置した「入力フォーム起動」ボタンを押した際にどのような動きをさせるかをVBAコードに記述します。
登録ボタンにVBAコードを記述します。
ユーザーフォームの「登録」ボタンをダブルクリックし、VBAコードを入力する画面に切り替えます。
上記赤枠のPrivate Sub cmd登録_Click()
End Sub
の中にコードを記述します。
動作イメージは、
登録ボタンを押す(クリック)⇒氏名(テキストボックス)に入力された値を取得⇒エクセルシートの氏名欄に反映する。
※エクセルシートの氏名欄は、すでに設定されている行の次行に反映するものとする。
この一連の動作をVBAコードに記述します。
1 2 3 4 5 6 7 8 9 10 11 12 |
Private Sub cmd登録_Click() 'エクセルシートのデータ最終行格納用変数の宣言 Dim lSerch_DataMaxRow As Long 'エクセルシートのデータ最終行を調べる lSerch_DataMaxRow = Cells(Rows.Count, 1).End(xlUp).Row 'ユーザーフォームで入力された値を、すでに設定されている行の次行に反映する Cells(lSerch_DataMaxRow + 1, 1).Value = txt氏名.Text End Sub |
閉じるボタンにVBAコードを記述します。
動作イメージは、
閉じるボタンを押す(クリック)⇒入力フォームを閉じる。
1 2 3 4 5 6 |
Private Sub cmd閉じる_Click() '入力フォームを閉じる Unload Me End Sub |
入力フォーム起動ボタンにVBAコードを記述します。
プロジェクトエクスプローラー①「プロジェクト VBAProject」を表示⇒②「標準モジュール」をダブルクリック⇒③「Module1」をダブルクリックし、VBAコードを入力する画面に切り替えます。
Sub 入力フォーム起動_Click()の中にコードを記述します。
動作イメージは、
入力フォーム起動ボタンを押す(クリック)⇒入力フォームを表示する。
1 2 3 4 5 6 |
Sub 入力フォーム起動_Click() '入力フォーム画面を表示 UserForm1.Show vbModal End Sub |
エクセルファイルを保存します。
エクセルファイルを保存する場合、ファイルの種類を「Excelマクロ有効ブック(*.xlsm)」にて保存してください。このようにしないと、VBAコードが保存されません。
最後まで読んでいただき、ありがとうございました!