|
よろずや さん、ありがとうございました!
Hirofumi さんに以下のご指摘を頂き、動くようになりました!
>myMeiCnt整数型変数に
>
> myMeiCnt = Range("L36").Value
>
>で、文字列等数値以外を代入しようとしている為だと思います
という事で、L36は、エクセルのIF関数で、何も入力されていない場合には、空白を表示するようにしていた為でした。
まったく理解できていませんが、メッセージボックスは、ポップアップ表示されるし、すごいの一言です。
裏側はどんな風に書いても、おなじように動くなんて、不思議です。
本当にありがとうございました。
以下、動くようになったコードです。
'
'「登録・更新」ボタンがクリックされたときの処理
'
Private Sub cmd登録・更新_Click()
Dim chkStr As String '入力チェックのメッセージ文
Dim myRcdNum As Long '現在のレコード番号
Dim myMeiCnt As Integer '「受注伝票」シートの明細データの件数
Dim tbEndRow As Long '「TB_受注」シートの最後の行の行番号
Dim r As Integer '「TB_受注」シートの書き込み先の行をカウント
Dim i As Integer 'カウンタ変数
'----- 入力データのチェック -----
'入力された明細データの件数を代入する
myMeiCnt = Range("L36").Value
'初期値を代入する
chkStr = ""
'担当者名が未入力の場合
If IsEmpty(Range("L11")) Then
chkStr = "受付担当を入力してください。"
Range("L11").Select
'顧客名が未入力の場合
ElseIf IsEmpty(Range("B6")) Then
chkStr = "顧客番号を入力してください。"
Range("B6").Select
'発送日が未入力の場合
ElseIf IsEmpty(Range("B9")) Then
chkStr = "発送日を入力してください。"
Range("B9").Select
'品名が未入力の場合
ElseIf myMeiCnt = 0 Then
chkStr = "明細データを入力してください。"
Range("B17").Select
'数量に空欄がある場合
Else
For i = 1 To 18
If Not IsEmpty(Cells(16 + i, 2)) Then 'i行目の品名
If IsEmpty(Cells(16 + i, 9)) Then 'i行目の数量
chkStr = "数量が未入力の商品があります。"
Cells(16 + i, 9).Select
'Forループを抜ける
Exit For
ElseIf IsEmpty(Cells(16 + i, 10)) Then 'i行目の数量単位
chkStr = "数量単位が未入力の商品があります。"
Cells(16 + i, 10).Select
'Forループを抜ける
Exit For
ElseIf IsEmpty(Cells(16 + i, 11)) Then 'i行目の単価
chkStr = "単価が未入力の商品があります。"
Cells(16 + i, 11).Select
'Forループを抜ける
Exit For
End If
End If
Next
End If
'入力漏れがある場合はプロシージャを抜ける
If chkStr <> "" Then
MsgBox chkStr, vbCritical, "登録エラー"
Exit Sub
End If
'----- 入力データのチェック -----
End Sub
|
|