プロが教えるわが家の防犯対策術!

エラーも出なければ、何もでないです。。
無駄に長くて申し訳ありませんが、助けてください。
''''請求書にデータを転記
Sub CreateSomePDF1()
Dim LastRowNum As Long
Dim i As Long, j As Long
Dim fileName As String
Dim OrderDate As Long
Dim Name1 As String, Name2 As String

Dim Price1 As Long, Prices2 As Long, Prices3 As Long
Dim 請求月 As Long, Total As Long, 施設料 As String, タオル代 As String
Dim クリーニング代 As String
Dim ApplicationDate As Long, Output As Integer


'フォルダが存在するかチェック
Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
If FSO.FolderExists(ThisWorkbook.Path & "\請求書") Then
'何もしない
Else
MsgBox "請求書フォルダがありません。このエクセルがあるフォルダ内に作成してください"
Exit Sub
End If
Set FSO = Nothing

'列番号を設定
OrderDate = 1
Name1 = 2
Name2 = 3
請求月 = 5
Total = 6
施設料 = 7
Price1 = 8
タオル代 = 9
Prices2 = 10
クリーニング代 = 11
Prices3 = 12
ApplicationDate = 47
Output = 48

With Sheets("請求内容一括管理シート")
'最終行を取得
LastRowNum = .Cells(Rows.Count, 1).End(xlUp).Row

For i = 3 To LastRowNum
'請求書のデータを初期化
Sheets("請求書").Range("R2") = ""
Sheets("請求書").Range("B5") = ""
Sheets("請求書").Range("F17") = ""
Sheets("請求書").Range("L17") = ""
For j = 0 To 10
Sheets("請求書").Cells(28 + j, 7) = ""
Sheets("請求書").Cells(28 + j, 13) = ""
Sheets("請求書").Cells(29 + j, 7) = ""
Sheets("請求書").Cells(29 + j, 13) = ""
Sheets("請求書").Cells(30 + j, 7) = ""
Sheets("請求書").Cells(30 + j, 13) = ""


Next j
Sheets("請求書").Range("F6") = ""

'出力にレ点が入っていれば出力
If Len(.Cells(i, 49)) > 0 Then
j = 0
'日付名前とかをコピペ
Sheets("請求書").Range("R2") = .Cells(i, OrderDate)
Sheets("請求書").Range("B5") = .Cells(i, Name1) & " 様"
Sheets("請求書").Range("F17") = .Cells(i, Name1) & " 様"
Sheets("請求書").Range("L17") = .Cells(i, 請求月)
Sheets("請求書").Range("D35") = .Cells(i, ApplicationDate)


'商品等をコピペ
If Len(.Cells(i, 施設料)) > 0 Then
Sheets("請求書").Cells(28, 7) = .Cells(i, 施設料)
Sheets("請求書").Cells(28, 14) = .Cells(i, Price1)
j = j + 1
End If
If Len(.Cells(i, タオル代)) > 0 Then
Sheets("請求書").Cells(28 + j, 2) = .Cells(i, タオル代)
Sheets("請求書").Cells(28 + j, 4) = .Cells(i, Prices2)
j = j + 1
End If
If Len(.Cells(i, クリーニング代)) > 0 Then
Sheets("請求書").Cells(28 + j, 2) = .Cells(i, クリーニング代)
Sheets("請求書").Cells(28 + j, 4) = .Cells(i, Prices3)
j = j + 1
End If


Sheets("請求書").Range("F6") = .Cells(i, Total)

'同じフォルダ内のPDFというフォルダに保存 送付状
fileName = ThisWorkbook.Path & "\請求書\" & .Cells(i, Name1) & .Cells(i, Name2) & " 様" & ".pdf"
Sheets("請求書").ExportAsFixedFormat Type:=xlTypePDF, fileName:=fileName

End If

Next i

End With

End Sub

「VBA 請求書自動作成」の質問画像

質問者からの補足コメント

  • へこむわー

    早速の返信ありがとうございます。
    やってみましたが、変わらずでした。ステップインすると、タイトルが黄色になり、動きません。
    請求内容一括管理シートは下記の通りです。
    未熟者ですみません。お願いします。

    「VBA 請求書自動作成」の補足画像1
    No.2の回答に寄せられた補足コメントです。 補足日時:2022/04/24 10:52
  • へこむわー

    返信ありがとうございます。
    1行目
    Sub CreateSomePDF1()
    で 黄色になり動きません。
      
    私の操作が悪いのでしょうか?

    No.3の回答に寄せられた補足コメントです。 補足日時:2022/04/24 12:53

A 回答 (3件)

詳しくは見ていませんが、以下の変数をLong型に変えてください。



変更前 Dim Name1 As String, Name2 As String
変更後 Dim Name1 As Long, Name2 As Long

変更前 施設料 As String, タオル代 As String
変更後 施設料 As Long, タオル代 As Long

変更前 Dim クリーニング代 As String
変更後 Dim クリーニング代 As Long

それで、とりあえず動くかと思います。
この回答への補足あり
    • good
    • 0

>1行目


>Sub CreateSomePDF1()
>で 黄色になり動きません。

その場合、その行にブレイクポイントが設定されている可能性があります。
添付図のように、Sub CreateSomePDF1()の行の左端に、茶色の●が表示されていませんでしょうか。それが、ブレイクポイントです。
ブレイクポイントがあるとマクロは必ず、その行で止まってしまいます。
茶色の●にマウスをあて、クリックするとブレイクポイントが解除されます。
「VBA 請求書自動作成」の回答画像4
    • good
    • 0
この回答へのお礼

Fin+F8 で ステップイン出来ました。
Longに変えてみたらうごきました。請求書が空なのは、セルNoを
私が間違えてました。
やっと、出来たと思ったら動かずで、あきらめようかと思っていたところでした。感謝です。有難うございました。

お礼日時:2022/04/24 23:13

>やってみましたが、変わらずでした。

ステップインすると、タイトルが黄色になり、動きません。

マクロが止まり、その行が黄色で表示されると思いますが、
どの行でとまってますか。
こちらで、確認した際は、(データが空の状態でしたが)、請求書が作成されました。
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!