[ ユーザーフォーム_目次 ]
登録用フォーム
登録用フォームは、入力内容をチェックして、エラーがなければワークシートに入力内容を登録しています。
[ 目次 ]
- 画面を再確認
- 初期処理
- 採番ボタン クリック時
- 登録ボタン クリック時
- キャンセルボタン クリック時
画面を再確認
初期処理
使用する各コンボボックスの値を設定しています。設定は
標準モジュールで行います。
Private Sub UserForm_Initialize()
SetComboBox (Me)
End Sub
− Memo −
-
標準モジュールの SetComboBox には、引数としてフォーム自体を渡します。
採番ボタン クリック時
ワークシートに保管してある最終IDからIDを採番して表示し、最終IDを更新します。
Private Sub ButtonNumberID_Click()
Worksheets("ID設定").Select
Dim lastID As String
lastID = Cells(2, 1).Value
Dim newID As String
Dim left1 As String
Dim right4 As String
left1 = Left(lastID, 1)
right4 = Right(lastID, 4)
right4 = WorksheetFunction.Text(Val(right4) + 1, "0000")
newID = left1 & right4
LabelID.Caption = newID
Cells(2, 1).Value = newID
ButtonNumberID.Enabled = False
End Sub
− Memo −
-
IDの頭に英文字を入れているので、わざわざ編集していますが、数字だけであれば、もっとシンプルになると思います。
-
一度採番したら、採番ボタンを押せないようにしています。
登録ボタン クリック時
入力内容をチェックし、チェックを通過したら、ワークシートの最終行に値を登録しています。
Private Sub ButtonAdd_Click()
'入力チェック
If InputIsInvalid Then
Exit Sub
End If
'データを登録
Worksheets("sheet1").Select
Dim lastRow As Integer
lastRow = Range("B1048576").End(xlUp).Row
Cells(lastRow + 1, 1).Value = LabelID.Caption
Cells(lastRow + 1, 2).Value = BoxName.Text
Cells(lastRow + 1, 3).Value = BoxSex.Text
Cells(lastRow + 1, 4).Value = DateOfBirth
MsgBox LabelID.Caption & vbCrLf & BoxName.Text & vbCrLf & _
"この会員を登録しました。", vbInformation + vbOKOnly, "確認"
'入力項目をクリア
LabelID.Caption = ""
BoxName.Text = ""
BoxSex.Value = ""
BoxYear.Value = ""
BoxMonth.Value = ""
BoxDay.Value = ""
'採番ボタンを使用可にする
ButtonNumberID.Enabled = True
ButtonNumberID.SetFocus
End Sub
----------------------------------------------------------------------
Private Function InputIsInvalid() As Boolean
'IDチェック
If LabelID.Caption = "" Then
MsgBox "ID を採番してください", vbExclamation, "ID 採番エラー"
InputIsInvalid = True
Exit Function
End If
'名前チェック
If BoxName.Text = "" Then
MsgBox "名前を入力してください", vbExclamation, "名前 入力エラー"
InputIsInvalid = True
Exit Function
End If
'性別チェック
If BoxSex.Text = "" Then
MsgBox "性別を選択してください", vbExclamation, "性別 選択エラー"
InputIsInvalid = True
Exit Function
End If
'生年月日チェック
DateOfBirth = BoxYear.Text & "/" & BoxMonth.Text & "/" & BoxDay.Text
If Not (IsDate(DateOfBirth)) Then
MsgBox "生年月日を確認してください", vbExclamation, "生年月日エラー"
InputIsInvalid = True
Exit Function
End If
InputIsInvalid = False
End Function
− Memo −
-
すべてを1プロシージャに記述すると長いので、入力チェックを別プロシージャにしました。
-
生年月日については、日付妥当性チェックをしています。(2月31日も選択できるような緩い仕様のため)
-
登録後、入力項目をクリアします。フォームは閉じず、採番ボタンを使用可にして、連続入力に備えます。
-
フォーカスを採番ボタンにセットします。
キャンセルボタン クリック時
登録用フォームを閉じます。
Private Sub ButtonCancel_Click()
Unload Me
End Sub