Step4:未入力行を検索しユーザーフォームのデータを追加する - Excel

登録ボタンを追加し、クリックすると顧客名簿シートの入力されていない最下行を検索し、そこにユーザーフォームに入力されたデータを追加します。

Step4で行う作業
  1. 標準モジュールを追加し、行位置を代入する変数を宣言します。
  2. 登録ボタンをユーザーフォームに追加します。
  3. 登録ボタンのクリックイベントに、氏名の入力チェックのVBAを入力します。
  4. 顧客シートの未入力の最下行を検索します。
  5. ユーザーフォームのデータをシートに追加します。
  6. テキストボックスを空にします。



Homeに戻る > 理容室・床屋の顧客管理Excelアプリへ

標準モジュールを追加し、パブリック変数を宣言する

メニューの[挿入]~[標準モジュール]をクリックします。
[標準モジュール]をクリックする

標準モジュールに「Module1」が追加されました。
そこに下記のVBAコードを入力します。

Option Explicit

Public lrowposi As Long
  • Option Explicitを追加すると、宣言していない変数を使うとエラーになります。これによりバグの防止に役立ちます。
  • Publicを使い変数を宣言すると、ブック内全体のVBAで使用できます。
  • lrowposiは行番号を格納する変数です。
標準モジュールにVBAコードを入力する

登録ボタンを配置し、シートにデータを追加するVBAの作成

閉じるボタンをコピー&ペーストし、追加したボタンのCaptionプロパティを「登録」にします。
ボタンの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
テキストボックスのデータを削除する

Homeに戻る > 理容室・床屋の顧客管理Excelアプリへ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved