VBAのEXITでのエラー
エクセルのフォームで入力したデータをシートに保存しようとしています。
ID番号でシートからvlookupで検索を行い、データがあれば自動で個人情報を入力します。マウス操作無しで連続入力したいので、一度登録ボタンをクリックし、シート最下行に登録したら、その後タブをIDテキストボックスにフォーカスします。Private Sub TextBoxID_Exit(ByVal Cancel As MSForms.ReturnBoolean)にコマンドを記入しているのですが、終了する際にテキストボックスに値がないためエラーが発生します。どうすればエラー回避できるでしょうか?フォームの画像とコマンドの一部を下記に記入します。よろしくお願いします。
フォーカスがIDにある状態で終了ボタンを押すとexitプロシージャが発生するためのエラーだと思うんですが、どうでしょうか?
うまく説明できていないかもしれませんがよろしくお願いします。
*****************************************************************
Private Sub TextBoxID_Exit(ByVal Cancel As MSForms.ReturnBoolean)
ID = TextBoxID.Text 'テキストボックスIDの値を取得
On Error GoTo ErrHdl '下記コマンドvlookupがエラーの場合ErrHdl処理する
Worksheets("data").Activate 'dataシートをアクティブにする
With ActiveSheet
TextBoxシメイ.Value = Application.WorksheetFunction.VLookup(ID, Range("b2:E65536"), 2, False)
TextBox誕生日.Value = Application.WorksheetFunction.VLookup(ID, Range("b2:E65536"), 3, False)
sex = Application.WorksheetFunction.VLookup(ID, Range("b2:E65536"), 4, False)
If sex = "M" Then
OptionButton男.Value = True
Else
OptionButton女.Value = True
End If
TextBox体重.SetFocus
End With
Exit Sub
ErrHdl: 'IDがなかった場合の処理
If TextBoxシメイ.Value = "" Then
MsgBox "新規です"
Exit Sub
End If
End Sub
**************************************************************************************
Private Sub CommandButton登録_Click()
With Worksheets("data")
lastrow = .Cells(Rows.Count, 1).End(xlUp).Row + 1 '最終行にデータを追加する
.Cells(lastrow, 1).Value = TextBox撮影日.Text '最終行の1列目の値
.Cells(lastrow, 2).Value = TextBoxID.Text
.Cells(lastrow, 3).Value = TextBoxシメイ.Text
.Cells(lastrow, 4).Value = TextBox誕生日.Text
.Cells(lastrow, 5).Value = sex
.Cells(lastrow, 6).Value = TextBox体重.Text
.Cells(lastrow, 7).Value = ComboBox撮影区分.Text
.Cells(lastrow, 8).Value = ComboBox撮影部位.Text
.Cells(lastrow, 9).Value = TextBoxFOV.Text
.Cells(lastrow, 10).Value = TextBox寝台高.Text
.Cells(lastrow, 11).Value = TextBoxDLP.Text
.Cells(lastrow, 12).Value = TextBoxCTDI.Text
.Cells(lastrow, 13).Value = TextBox電圧.Text
.Cells(lastrow, 14).Value = TextBoxmAs.Text
End With
'TextBox撮影日.Text = ""
TextBoxID.Text = ""
TextBoxシメイ.Text = ""
TextBox誕生日.Text = ""
OptionButton男.Value = False
OptionButton女.Value = False
TextBox体重.Text = ""
ComboBox撮影区分.Text = ""
ComboBox撮影部位.Text = ""
TextBoxFOV.Text = ""
TextBox寝台高.Text = ""
TextBoxDLP.Text = ""
TextBoxCTDI.Text = ""
TextBox電圧.Text = ""
TextBoxmAs.Text = ""
Me.ComboBox撮影区分.Text = 区分 '初期値を再設定(この変数は他で宣言済み)
Me.ComboBox撮影部位.Text = 部位
Me.TextBox電圧.Text = 電圧
TextBoxID.SetFocus 'TextBoxIDに移動
End Sub
*****************************************************************************
Private Sub CommandButton終了_Click()
Unload UserForm2 'フォームを消去
End Sub
**********************************************************************************
お礼
ありがとうございます。無事に動作いたしました。 基本的なことだったのですね。初心者なので気が付きませんでした。 もっと勉強したいと思います。