標準モジュールを追加し、パブリック変数を宣言する
メニューの[挿入]~[標準モジュール]をクリックします。
標準モジュールに「Module1」が追加されました。
そこに下記のVBAコードを入力します。
Option Explicit
Public lrowposi As Long
- Option Explicitを追加すると、宣言していない変数を使うとエラーになります。これによりバグの防止に役立ちます。
- Publicを使い変数を宣言すると、ブック内全体のVBAで使用できます。
- lrowposiは行番号を格納する変数です。
登録ボタンを配置し、シートにデータを追加するVBAの作成
閉じるボタンをコピー&ペーストし、追加したボタンのCaptionプロパティを「登録」にします。
登録ボタンをダブルクリックすると、クリックイベントのVBAが表示されます。
氏名を必須データとして、入力されているかどうかチェックします。
もし入力されていない場合は、エラーメッセージを表示し、クリックイベントから抜けます。
Private Sub CommandButton2_Click()
Dim ln1 As Long
If TextBox2.Value = "" Then
Beep
MsgBox "氏名を入力してください。(必須)"
Exit Sub
End If
End Sub
顧客名簿の未入力の行を検索するVBAです。
シートの最下行(C1048576セル)から、Endプロパティで上に移動します。
入力されている最初の行が返るので、それに+1すれば未入力の行になります。
ln1 = Sheets("顧客名簿").Range("C1048576").End(xlUp).Row + 1
次に、Cellsでセルを指定し、テキストボックスのデータを代入します。
Private Sub CommandButton2_Click()
Dim ln1 As Long
If TextBox2.Value = "" Then
Beep
MsgBox "氏名を入力してください。(必須)"
Exit Sub
End If
If lrowposi = 0 Then
ln1 = Sheets("顧客名簿").Range("C1048576").End(xlUp).Row + 1
Sheets("顧客名簿").Cells(ln1, 2) = TextBox1.Value
Sheets("顧客名簿").Cells(ln1, 3) = TextBox2.Value
Sheets("顧客名簿").Cells(ln1, 4) = TextBox3.Value
Sheets("顧客名簿").Cells(ln1, 5) = TextBox4.Value
Sheets("顧客名簿").Cells(ln1, 6) = TextBox5.Value
Sheets("顧客名簿").Cells(ln1, 7) = TextBox6.Value
Sheets("顧客名簿").Cells(ln1, 8) = TextBox7.Value
End If
End Sub
Sheets("顧客名簿")の部分は、Withステートメントで省略することもできます。
実際にデータを入力しテストします。
登録ボタンをクリックすると、顧客名簿シートにテストデータが追加されます。
テキストボックスのデータをクリアしていないので、クリックする度に追加されます。
テキストボックスのデータを削除します。
Option Explicit
Private Sub CommandButton2_Click()
Dim ln1 As Long
If TextBox2.Value = "" Then
Beep
MsgBox "氏名を入力してください。(必須)"
Exit Sub
End If
If lrowposi = 0 Then
ln1 = Sheets("顧客名簿").Range("C1048576").End(xlUp).Row + 1
Sheets("顧客名簿").Cells(ln1, 2) = TextBox1.Value
Sheets("顧客名簿").Cells(ln1, 3) = TextBox2.Value
Sheets("顧客名簿").Cells(ln1, 4) = TextBox3.Value
Sheets("顧客名簿").Cells(ln1, 5) = TextBox4.Value
Sheets("顧客名簿").Cells(ln1, 6) = TextBox5.Value
Sheets("顧客名簿").Cells(ln1, 7) = TextBox6.Value
Sheets("顧客名簿").Cells(ln1, 8) = TextBox7.Value
End If
TextBox1.Value = ""
TextBox2.Value = ""
TextBox3.Value = ""
TextBox4.Value = ""
TextBox5.Value = ""
TextBox6.Value = ""
TextBox7.Value = ""
End Sub