ここからはマクロを書いてみよう。
まず「登録」ボタンをダブルクリックすると、リスト1のようなSubプロシージャが自動的に作成される。
Private Sub 登録ボタン_Click() End Sub
このリスト1の中にコードを書いていく。コードはリスト2のようになる。
Option Explicit Private sex As String Private lastRow As Long Private Sub 登録ボタン_Click() If 氏名テキストボックス.Text = "" Then MsgBox "氏名を入力してください。" Exit Sub End If If 住所テキストボックス.Text = "" Then MsgBox "住所を入力してください。!" Exit Sub End If If 電話テキストボックス.Text = "" Then MsgBox "電話番号を入力してください。" Exit Sub End If If sex = "" Then MsgBox "性別を選択してください。" Exit Sub End If With Worksheets("Sheet1") lastRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1 .Cells(lastRow, 1).Value = 氏名テキストボックス.Text .Cells(lastRow, 2).Value = 住所テキストボックス.Text .Cells(lastRow, 3).Value = 電話テキストボックス.Text .Cells(lastRow, 4).Value = sex End With 氏名テキストボックス.Text = "" 住所テキストボックス.Text = "" 電話テキストボックス.Text = "" 男性オプションボタン.Value = False 女性オプションボタン.Value = False End Sub Private Sub 男性オプションボタン_Change() If 男性オプションボタン.Value = True Then sex = "男性" End If End Sub Private Sub 女性オプションボタン_Change() If 女性オプションボタン.Value = True Then sex = "女性" End If End Sub
マクロの中身を解説しよう。まず、3〜4行目では、「性別」から選択された値を格納しておく文字列型変数「sex」とデータの入っている行の個数を格納するLong型変数「lastRow」を宣言している
「登録ボタン_Click()」では、まず「氏名」「住所」「電話番号」にデータが入っていなかったら警告メッセージを表示する(7〜20行目)。
文字列型変数sexに値が入ってない場合も、警告メッセージを表示してる(22〜25行目)。sexに入る値は、次に記述しているコード内で「男性」または「女性」の「オプションボタン」の値が変更されたときに取得するようにしている(42〜52行目)。
27〜33行目では、全ての項目に無事値が入ると、Sheet1のワークシートに対してセルの上方向(xlUp)に向かってデータが入っているセルを検索し、そのセルの1つ下のセルにデータを追加していく処理を記述している。この場合、「氏名」の項目名の下のセルにデータを追加する。
最初の行の1列目に「氏名テキストボックス」の値を入力する。lastRowにはデータの入っている行の個数が格納されているため、データの入っている行の1つ下の行から順次データを追加していく。
次に、2列目の「住所」に「住所テキストボックス」の値を入力、3列目の「電話番号」に「電話番号テキストボックス」の値を入力する。最後に、4列目の「性別」に変数sexが格納している値を入力する。
データを追加していくと、追加されたデータの位置まで上方向に向かって検索し、その1つ下にデータを追加していくので、順次データが追加されていくことになる。
Excelにデータを追加した後は、それぞれの入力ボックスを空にし、オプションボタンの選択も解除する。
このように、入力フォームを持つアプリケーションの開発では、一度入力して実行した後は、次の入力のために入力内容をクリアしておくことが大事だ。忘れずに行おう。
このマクロを実行してフォームにデータを入力したのが図5、「登録」ボタンでExcelに追加したのが図6となる。データが追加される「A3:D:100」の範囲には、Excel 2016のメニューから「フォントのサイズ」を「14」に手動で設定している。
このマクロを実行してデータを追加していくには、あらかじめExcelの表に「氏名」「住所」「電話番号」「性別」といった項目名だけの表を作成しておく必要がある。
このフォームをExcel上から起動させるには、次の手順を踏む。
VBEの画面で、プロジェクト内の「VBAプロジェクト(Form1.xlsm)」を選択し、VBEメニューの[挿入]→[標準モジュール]と選択して、Module1を追加する。その中に、リスト3のマクロを追加する。Showメソッドでフォームを表示するだけの簡単なものだ。
Option Explicit Sub 入力フォーム起動() UserForm1.Show End Sub
次に、Excel上にボタンを配置して、名前に「入力フォーム起動」とでもして、「入力フォーム起動」マクロを関連付けると、図7のようになる。
以上で、「テキストボックス」と「オプションボタン」を使用したフォームの例は終わりだ。
Copyright © ITmedia, Inc. All Rights Reserved.