Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


17952 / 76738 ←次へ | 前へ→

【64230】Re:Elseの分岐
質問  初心者です  - 10/1/27(水) 10:52 -

引用なし
パスワード
   よろずや さん、ご親切にご回答をありがとうございます。
ですが、こちらも、同じ箇所の

実行時エラー'13':
型が一致しません。

のエラーが出てしまいました。

'----- 入力データのチェック -----
  '入力された明細データの件数を代入する
  myMeiCnt = Range("L36").Value   ←そして、ここが黄色く選択されます

私の質問の仕方がまずかったかもしれません。
エラーの出ない、当初の本に書かれてあった、サンプルコードは、以下のとおりです。

'
'「登録」ボタンがクリックされたときの処理
'
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("J23").Value
  
  '初期値を代入する
  chkStr = ""
  
  '受付担当が未入力の場合
  If IsEmpty(Range("D3")) Then
    chkStr = "受付担当を入力してください。"
    Range("D3").Select
  
  '顧客番号が未入力の場合
  ElseIf IsEmpty(Range("D7")) Then
    chkStr = "顧客番号を入力してください。"
    Range("D7").Select
  
  '商品番号が未入力の場合
  ElseIf myMeiCnt = 0 Then
    chkStr = "明細データを入力してください。"
    Range("C11").Select
  
  '数量に空欄がある場合
  Else
    For i = 1 To 10
      If Not IsEmpty(Cells(10 + i, 3)) Then    'i行目の商品番号
        If IsEmpty(Cells(10 + i, 8)) Then    'i行目の数量
          chkStr = "数量が未入力の商品があります。"
          Cells(10 + i, 8).Select
          
          'Forループを抜ける
          Exit For
        End If
      End If
    Next
  End If
  
  '入力漏れがある場合はプロシージャを抜ける
  If chkStr <> "" Then
    MsgBox chkStr, vbCritical, "登録エラー"
    Exit Sub
  End If
End Sub

よろずや さんのご指示のように、私が入れてみたコードは、以下の通りです。

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

私のやりたかった事は、たぶん、こんな感じで、Else以下からを分岐させたかったのですが、なにぶん、初心者のため、対応する閉じタグ?のような、Endコードでしょうか?それが、どこがどこに対応しているのかが、わかりません。
HTMLのタグのように、どれがどれに対応しているか、分かるようなビルダーみたいなソフトがあれば、いいんですが・・・

申し訳ありませんが、何卒、よろしくお願いいたします。

0 hits

【64217】Elseの分岐 初心者です 10/1/26(火) 17:36 質問
【64218】Re:Elseの分岐 Hirofumi 10/1/26(火) 18:42 回答
【64219】Re:Elseの分岐 Hirofumi 10/1/26(火) 18:51 回答
【64220】Re:Elseの分岐 Hirofumi 10/1/26(火) 19:13 回答
【64229】Re:Elseの分岐 初心者です 10/1/27(水) 10:42 質問
【64231】Re:Elseの分岐 neptune 10/1/27(水) 11:02 回答
【64233】Re:Elseの分岐 初心者です 10/1/27(水) 11:34 質問
【64236】Re:Elseの分岐 seg 10/1/27(水) 12:25 発言
【64242】Re:Elseの分岐 初心者です 10/1/27(水) 14:36 質問
【64235】Re:Elseの分岐 Hirofumi 10/1/27(水) 12:16 回答
【64240】Re:Elseの分岐 初心者です 10/1/27(水) 13:53 お礼
【64243】Re:Elseの分岐 Hirofumi 10/1/27(水) 14:42 発言
【64244】Re:Elseの分岐 初心者です 10/1/27(水) 15:03 お礼
【64221】Re:Elseの分岐 よろずや 10/1/26(火) 19:30 回答
【64230】Re:Elseの分岐 初心者です 10/1/27(水) 10:52 質問
【64241】Re:Elseの分岐 初心者です 10/1/27(水) 14:00 お礼

17952 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free