横浜国立大学理工学部建築都市環境系学科卒
一級鉄筋技能士
Excelデータの前処理が終わったら、UI(ユーザーインターフェース)を整えましょう。
この記事では、ユーザーフォームを使ってExcelデータをアプリ化する方法を解説します。
目次
ユーザーフォームの命名ルール
「工事マスタ登録」のボタンを押したときに、工事名や見積金額などの情報を登録できるようにします。
具体的に方法を見ていきましょう。
各オブジェクト名を命名ルールに従って付与する
例えば、工事名、予算、工事開始日、工事終了日をそれぞれuserform1、userform2、userform3、userform4というオブジェクト名にしたときに、VBAのプログラムを記載しているときにuserform3が何を指しているのかわからなくなる時があります。
例では4つのフォームしかありませんが、これが数十個になるととても煩雑になるのは容易に想像できると思います。
実装が煩雑にならないように、ラベルやテキストボックスは命名ルールに則って適切なオブジェクト名を指定します。
命名ルール
※昔からの慣習
Label :lbl***
TextBox :txt***
CommandButon:cmd***
Form :frm***
工事名、見積金額、予算原価、契約日、工事開始日、工事終了日のテキストボックスを追加する
実際に各オブジェクトに名前を付けて行きます。
1 2 3 4 5 6 |
工事名:txtName 見積金額:txtEstimate 予算:txtBuget 契約日:txtContract 開始日:txtStartDate 終了日:txtEndDate |
フォームに入力したデータを取得し、テーブルに追加する
ユーザーフォームが作成出来たら、フォームに入力されたデータをテーブルに追加されるように実装していきます。
詳しく見てきましょう。
わからない場合はchatGPTに聞く
コードを最初から記述できないのは当然です。
分からない場合は、chatGPTをフル活用してコードを記載しましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
プロンプト「テーブルデータ VBA 追加 コードを教えてください」 ChatGPT回答 VBAを使用してエクセルのテーブルにデータを追加するコードを提供します。以下は、テーブルの最終行に新しいデータを追加する例です。 Sub データをテーブルに追加() Dim ws As Worksheet Dim tbl As ListObject Dim newRow As ListRow ' ワークシートを指定 Set ws = ThisWorkbook.Worksheets("シート名") ' シート名を適切なものに変更してください ' テーブルを指定 Set tbl = ws.ListObjects("テーブル名") ' テーブル名を適切なものに変更してください ' 新しい行を追加 Set newRow = tbl.ListRows.Add ' 新しいデータを設定(各列にデータを追加) newRow.Range(1, 1).Value = "値1" ' 値1を適切なデータに変更 newRow.Range(1, 2).Value = "値2" ' 値2を適切なデータに変更 ' 別の列にも必要に応じてデータを追加 ' 保存 ThisWorkbook.Save End Sub |
データセットのシートのテーブル2の一番最後に取得したデータを追加挿入する
具体的なコードは以下の通りです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
Private Sub cmdConfirm_Click() 'ワークシートとテーブルの参照を設定 Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("データセット") Dim tbl As ListObject Set tbl = ws.ListObjects("テーブル2") ' テーブルの最後に新しい行を追加 Dim newrow As ListRow Set newrow = tbl.ListRows.Add ' 新しい行の各列にデータを入力 newrow.Range(1, 1).Value = txtName.Text newrow.Range(1, 2).Value = txtEstimate.Text newrow.Range(1, 3).Value = txtBudget.Text newrow.Range(1, 4).Value = txtContract.Text newrow.Range(1, 5).Value = txtStartDate.Text newrow.Range(1, 6).Value = txtEndDate.Text ' formを閉じる Me.Hide End Sub |
新規データ「工事61」を入力すると確かにテーブル2の一番最後にデータが追加されることを確認します。
ユーザーが入力しやすいようにフォームを工夫する
日付の入力欄は、カレンダーコントロールを表示すればユーザーにとってはとても使いやすいですね。
※「Microsoft Date and Time Picker Control」があれば追加できる。僕の環境には残念ながらありませんが、入力するだけであればカレンダーコントロールが無くても問題ないと考えます。
まとめ
この記事では、ユーザーフォームを使用してExcelデータをアプリ化する方法を解説しました。
命名ルールに則って各オブジェクト名を付与することがポイントです。