見出し画像

VBAの要点-8/会員名簿の入力フォーム

こんにちは、rock204チャンネルです。
今回は「VBAの要点8 会員名簿の入力フォーム」と題しお送りします。
このプレゼンテーションでは、VBAを使用してExcelに入力フォームを作成する方法を説明しています。
VBAソースは、ユーザーフォームの作成、コントロールの配置、データの読み書き、フォームの表示と非表示など、フォーム作成のプロセス全体を網羅しています。

最初に入力フォームの使用イメージを説明します。
今回は、架空の会員名簿を想定してワークシートにデータを書き込むフォームを作成しました。
アクティブセルで、コントロール+fをを押すと入力フォームが表示され、その行のデータが表示されます。
そしてデータを修正し「登録」ボタンを押すと、その行のデータが変更されます。
それでは具体的に作成するユーザーフォームを説明して行きます。

ユーザーフォーム「InputForm1」は、この図のようにラベルとテキストボックス、コマンドボタンより構成されます。
テキストボックスは上より、”KaiinBangou”,”KanjiSimei”,”KanaSimei”,”Nenrei”,”Seibetu”とオブジェクト名を設定しています。
またコマンドボタンは左より、”Sinki”,”Touroku”,”Tojiru”とオブジェクト名をつけています。

テキストボックスのIMEコントロールは、プロパティでIMEモードを設定しています。

テキストボックスのIME Modeプロパティは、以下のように設定しました。
KaiinBangouは、2-fmIMEModeOff
KanjiSimeiは、4-fmIMEModeHiragana
KanaSimeiは、5-fmIMEModeKatakana
Nenreiは、2-fmIMEModeOff
Seibetuは、4-fmIMEModeHiragana
と設定しました。

次に入力順の設定をタブオーダーで行いました。
設定方法は、ユーザーフォーム上で右クリックしタブオーダーを選択します。
そしてコントロールを選択した上で、「上に移動」または「下に移動」で順番を設定します。

次に具体的コードについて説明して行きます。
最初にデータの書き込み行番号をグローバル変数RecNumberとして宣言します。

フォームが開かれたときに実行するコードです。
2行目は、変数の宣言として Dim i As Integer で整数型の変数 i を宣言します。
3行目は、With Worksheets(“Sheet1”)で、「Sheet1」を対象とした記述とします。
4行目は、アクティブセルの行番号を取得するもので、 i = ActiveCell.Row で現在選択されているセルの行番号を取得し、変数 i に代入します。
5から9行目は、セルの値をフォームのテキストボックスに設定するコードです。
Me.KaiinBangou.Text = .Cells(i, 1) で、シートの i 行目、1列目の値を KaiinBangou テキストボックスに設定します。
Me.KanjiSimei.Text = .Cells(i, 2) で、シートの i 行目、2列目の値を KanjiSimei テキストボックスに設定します。
Me.KanaSimei.Text = .Cells(i, 3) で、シートの i 行目、3列目の値を KanaSimei テキストボックスに設定します。
Me.Nenrei.Text = .Cells(i, 4) で、シートの i 行目、4列目の値を Nenrei テキストボックスに設定します。
Me.Seibetu.Text = .Cells(i, 5) で、シートの i 行目、5列目の値を Seibetu テキストボックスに設定します。
10行目は、withステートメントの終わりを示します。
11行目は、RecNumber = i で、変数 RecNumber に i の値を代入します。
このコードにより、ユーザーフォームが開かれたときに、アクティブセルの行のデータがフォームの各テキストボックスに表示されるようになります。



With…End Withステートメントについて説明します。
このステートメントは、特定のオブジェクトに対して複数のプロパティやメソッドを簡潔に記述するために使用されます。これにより、コードの可読性が向上し、繰り返しの記述を減らすことができます。
基本構文は、
With オブジェクトではじまり
次に、プロパティやメソッドの呼び出し
プロパティ1 = 値1
メソッド1
プロパティ2 = 値2
最後にEnd Withで終わります。
この構文を使用することで、同じオブジェクトに対する複数の操作をまとめて記述でき、コードがより読みやすくなります。


「新規」ボタンを押したときのコードです。
このコードは、Excelのユーザーフォームで「新規」ボタンがクリックされたときに実行されます。具体的には、以下の手順で動作します:
1行目のサブルーチンの初期化は、 Private Sub Sinki_Click() で新規データ入力のためのサブルーチンを開始します。
2行目の変数の宣言は、 Dim lastRow, i As Integer で整数型の変数 lastRow と i を宣言します。
3行目の最終行の取得は、 lastRow = Cells(Rows.Count, 1).End(xlUp).Row で、シートの最終行を取得し、変数 lastRow に代入します。
5行目のWithステートメントの開始は、 With Worksheets("Sheet1") で、シート1の操作を開始します。
6から10行目は、テキストボックスの初期化をおこないます。
Me.KaiinBangou.Text = lastRow で、会員番号のテキストボックスに最終行の値を設定します。
Me.Kanjisimei.Text = "" で、漢字氏名のテキストボックスを空にします。
Me.KanaSimei.Text = "" で、カナ氏名のテキストボックスを空にします。
Me.Nenrei.Text = "" で、年齢のテキストボックスを空にします。
Me.Seibetu.Text = "" で、性別のテキストボックスを空にします。
11行目は、Withステートメントの終了です。
12行目は、RecNumber = lastRow + 1 で、次のレコード番号を設定します。
13行目は、 End Sub でサブルーチンを終了します。
このコードにより、新規データ入力の際にフォームの各フィールドが初期化され、次のレコード番号が設定されます。

このコードは、Excelのユーザーフォームで「Touroku」ボタンがクリックされたときに実行されます。
1行目は、Private Sub Touroku_Click() でシートにデータを書き込むためのサブルーチンを開始します。
2行目は、 Dim i As Integer で整数型の変数 i を宣言します。
3行目は、 i = RecNumber で、現在のレコード番号を取得し、変数 i に代入します。
4行目は、Withステートメントの開始で、シート1の操作を開始します。
5から9行目は、セルへのデータ書き込みです。
Cells(i, 1) = Me.KaiinBangou.Text で、会員番号のテキストボックスの値をシートの i 行目、1列目に設定します。
Cells(i, 2) = Me.KanjiSimei.Text で、漢字氏名のテキストボックスの値をシートの i 行目、2列目に設定します。
Cells(i, 3) = Me.KanaSimei.Text で、カナ氏名のテキストボックスの値をシートの i 行目、3列目に設定します。
Cells(i, 4) = Me.Nenrei.Text で、年齢のテキストボックスの値をシートの i 行目、4列目に設定します。
Cells(i, 5) = Me.Seibetu.Text で、性別のテキストボックスの値をシートの i 行目、5列目に設定します。
10行目は、Withステートメントの終了です。
11行目は、 End Sub でサブルーチンを終了します。
このコードにより、ユーザーフォームの入力データがシートに書き込まれます。

「閉じる」ボタンが押されたときのコードです。
このコードは、Excelのユーザーフォームで「閉じる」ボタンがクリックされたときに実行されます。
1行目は、Private Sub Tojiru_Click() でサブルーチンを開始します。
2行目は、Unload InputForm1 で、InputForm1 という名前のユーザーフォームを閉じます。
3行目は、End Sub でサブルーチンを終了します。
このコードにより、ユーザーフォームが閉じられ、画面から消えます。

ユーザーフォームを開くコードです。
このコードは、ExcelのユーザーフォームInputForm1を開くコードです。また、このマクロはショートカットキー{CLRT+f}で実行できるよう設定しています。
1行目は、 Sub StartCord() でサブルーチンを開始します。
2行目は、 InputForm1.Show で、InputForm1 という名前のユーザーフォームを表示します。
3行目は、 End Sub でサブルーチンを終了します。
このコードにより、ユーザーフォームが表示され、ユーザーが入力を行うことができるようになります。

入力フォームの実施状況・動画

添付したファイルは下記の方法で[ブロック解除]してください。
Windows ファイル エクスプローラーを開き、ファイルを保存したフォルダーに移動します。

  1. ファイルを右クリックし、コンテキスト メニューから [プロパティ] を選択します。

  2. [全般] タブの下部で、[ブロック解除] チェック ボックスを選択して、[OK] を選択します。



この記事が気に入ったらサポートをしてみませんか?