|
よろずや さん、ご親切にご回答をありがとうございます。
ですが、こちらも、同じ箇所の
実行時エラー'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のタグのように、どれがどれに対応しているか、分かるようなビルダーみたいなソフトがあれば、いいんですが・・・
申し訳ありませんが、何卒、よろしくお願いいたします。
|
|