|
Hirofumi さん、ありがとうございます!!
おかげで動きました!
>myMeiCnt整数型変数に
>
> myMeiCnt = Range("L36").Value
>
>で、文字列等数値以外を代入しようとしている為だと思います
という事で、L36は、エクセルのIF関数で、何も入力されていない場合には、空白を表示するようにしていた為でした。
ご説明頂いたことは、まったく分かりませんでしたが、メッセージボックスは、ポップアップ表示されるし、すごいの一言です。
ありがとうございました。
以下、動くようになったコードです。
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
Private Sub cmd登録・更新_Click()
Dim chkStr As String
'入力漏れがある場合はプロシージャを抜ける
chkStr = DataCheke
If chkStr <> "" Then
MsgBox chkStr, vbCritical, "登録エラー"
End If
End Sub
|
|