| 
    
     |  | エクセルで納品書を作成する本を見て、納品書を作成している、VBA初心者です。 使いやすいように、アレンジしたいのですが、Elseの分岐で、つまずいています。
 以下の伝票の登録ボタンを作成しているのですが、「〜が未入力の場合」と「〜が空白の場合」の分岐条件を増やしたく、以下のようにしてみましたが、「コンパイルエラー Elseに対応するIfがありません」の文章が出て、'数量単位に空欄がある場合の次のElseが選択されます。
 基本的な事なのかもしれませんが、本を見て、丸写しながらやっている為、どこが間違っているのか、分かりません。
 何卒、ご教示のほど、よろしくお願いいたします。
 
 '
 '「登録・更新」ボタンがクリックされたときの処理
 '
 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
 End If
 End If
 Next
 End If
 
 '数量単位に空欄がある場合
 Else
 For i = 1 To 18
 If Not IsEmpty(Cells(16 + i, 2)) Then    'i行目の品名
 If IsEmpty(Cells(16 + i, 10)) Then    'i行目の数量単位
 chkStr = "数量単位が未入力の商品があります。"
 Cells(16 + i, 10).Select
 
 'Forループを抜ける
 Exit For
 End If
 End If
 Next
 End If
 
 '単価に空欄がある場合
 Else
 For i = 1 To 18
 If Not IsEmpty(Cells(16 + i, 2)) Then    'i行目の品名
 If 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
 
 |  |