Excel VBA質問箱 IV

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

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


17953 / 76738 ←次へ | 前へ→

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

引用なし
パスワード
   Hirofumi さん、ご親切にご回答をありがとうございます。
ですが、

実行時エラー'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

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

Private Sub cmd登録・更新_Click()
  Dim chkStr As String
 
 
  '入力漏れがある場合はプロシージャを抜ける
  chkStr = DataCheke
  If chkStr <> "" Then
    MsgBox chkStr, vbCritical, "登録エラー"
  End If

End Sub


Private Function DataCheke() As String

  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

  '担当者名が未入力の場合
  If IsEmpty(Range("L11")) Then
    DataCheke = "受付担当を入力してください。"
    Range("L11").Select
    Exit Function
  End If
 
  '顧客名が未入力の場合
  If IsEmpty(Range("B6")) Then
    DataCheke = "顧客番号を入力してください。"
    Range("B6").Select
    Exit Function
  End If

  '発送日が未入力の場合
  If IsEmpty(Range("B9")) Then
    DataCheke = "発送日を入力してください。"
    Range("B9").Select
    Exit Function
  End If

  '品名が未入力の場合
  If myMeiCnt = 0 Then
    DataCheke = "明細データを入力してください。"
    Range("B17").Select
    Exit Function
  End If

  '数量に空欄がある場合
  For i = 1 To 18
    If Not IsEmpty(Cells(16 + i, 2)) Then    'i行目の品名
      If IsEmpty(Cells(16 + i, 9)) Then    'i行目の数量
        DataCheke = "数量が未入力の商品があります。"
        Cells(16 + i, 9).Select
        'Forループを抜ける
'        Exit For
        Exit Function
      End If
    End If
  Next i
 
  '数量単位に空欄がある場合
  For i = 1 To 18
    If Not IsEmpty(Cells(16 + i, 2)) Then    'i行目の品名
      If IsEmpty(Cells(16 + i, 10)) Then    'i行目の数量単位
        DataCheke = "数量単位が未入力の商品があります。"
        Cells(16 + i, 10).Select
        'Forループを抜ける
'        Exit For
        Exit Function
      End If
    End If
  Next i

  '単価に空欄がある場合
  For i = 1 To 18
    If Not IsEmpty(Cells(16 + i, 2)) Then    'i行目の品名
      If IsEmpty(Cells(16 + i, 11)) Then    'i行目の単価
        DataCheke = "単価が未入力の商品があります。"
        Cells(16 + i, 11).Select
        'Forループを抜ける
'        Exit For
        Exit Function
      End If
    End If
  Next i

End Function

こちら、なにぶん、初心者のため、ご指示頂いた内容が、よく分かりませんでした。
申し訳ありませんが、何卒、よろしくお願いいたします。


  

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 お礼

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