2023年5月3日【ID:0】
【ExcelVBA】データ登録フォームを開発する
データ登録フォームをVBAを使って開発する場合は、基本的に以下のパターンになります。
※今回の内容は、記事の最後にて配布しています。
①登録フォームを用意する
→今回は簡単に解説するため、同じシート内の1~2行目に用意しています。
②[開発]タブから[マクロ]を選択し、好みの名前で作成する
③以下のコードを入力する
Sub テータ登録()
Dim lastRow As Long
lastRow = Cells(Rows.Count, "A").End(xlUp).Row + 1
Cells(lastRow, "A").Value = WorksheetFunction.Max(Columns(1)) + 1
Range(Cells(lastRow, "B"), Cells(lastRow, "C")).Value = Range("B2:C2").Value
Range("B2:C2").ClearContents
End Sub
簡単に解説します。
最初の「Dim」は一時的な値を格納する用の部屋を用意しています。(変数宣言)
「lastRow」は作成する部屋の名前(変数名)で、「As Long」が部屋の種類(変数の型)の指定で「Long」という部屋は整数を入れる用の部屋になります。
「lastRow = Cells(Rows.Count, "A").End(xlUp).Row + 1」の「Cells(Rows.Count, "A").End(xlUp).Row + 1」はA列の値が入力されている最終行の1つ下の行番号を取得しています。
その番号を「lastRow」に格納しています。
セルの指定方法はCells(行番号,列番号)とRange(アドレス)、Range(開始のセル情報, 終了のセル情報)などがあります。
「=」で結んでいる場所は、「右辺を左辺に代入する」という意味で読んでいただければと思います。
IF文などの中で使われる場合は、「等号」としての意味になります。
「WorksheetFunction.Max(Columns(1)) + 1」で1列目(A列)の数値の最大値に1を加えた値を取得し、「lastRow」行目のA列に入力しています。
「Range(Cells(lastRow, "B"), Cells(lastRow, "C")).Value = Range("B2:C2").Value」で登録フォーム(B2:C2)の値を「lastRow」行目のB列からC列に入力しています。
最後、「Range("B2:C2").ClearContents」で登録フォーム(B2:C2)の値を削除しています。
④[開発]タブの[挿入]からボタンを作成する
※作成したボタンを編集する場合は、Ctrlキーを押しながらクリックします。
基本は、このようなパターンが多いです。
後は、登録フォームをユーザーフォームにしたりとアレンジしていきます。
VBAの基本的な構文に関しては以下にまとめています。
▼サンプルファイル▼