| 
    
     |  | よろずや さん、ありがとうございました! 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
 
 |  |