'【VBA】【請求書自動印刷システム】(3日目(最終日) 完成ソース)
'グローバル変数宣言
Dim data_gyou_count As Integer
Dim data_retu_count As Integer
Dim tanka As Integer
Sub my_print_seikyusyo()
'変数宣言
Dim hinmoku_gyou_count As Integer
'変数初期化
data_gyou_count = 2
data_retu_count = 5
hinmoku_gyou_count = 19
'シート「請求先データ」の「会社名」が途切れるまでデータを移し替え
Do While Worksheets("請求先データ").Cells(data_gyou_count, 1).Value <> ""
'会社名
Worksheets("請求書").Range("A5").Value = Worksheets("請求先データ").Cells(data_gyou_count, 1).Value
'郵便番号
Worksheets("請求書").Range("A8").Value = "〒" & Worksheets("請求先データ").Cells(data_gyou_count, 2).Value
'住所1
Worksheets("請求書").Range("A9").Value = Worksheets("請求先データ").Cells(data_gyou_count, 3).Value
'住所2
Worksheets("請求書").Range("A10").Value = Worksheets("請求先データ").Cells(data_gyou_count, 4).Value
'「請求額」項目になるまで品目データを移し替え(品目の増加・減少に備えて)
Do While Worksheets("請求先データ").Cells(1, data_retu_count).Value <> "請求額"
'品目ごとの単価を選び出す
Call my_choose_tanka
'各品目、数量が「1」以上の時だけデータを書き出す
If Worksheets("請求先データ").Cells(data_gyou_count, data_retu_count).Value > 0 Then
'品目名
Worksheets("請求書").Cells(hinmoku_gyou_count, 1).Value = _
Worksheets("請求先データ").Cells(1, data_retu_count).Value
'品目ごとの単価
Worksheets("請求書").Cells(hinmoku_gyou_count, 4).Value = tanka
'数量
Worksheets("請求書").Cells(hinmoku_gyou_count, 6).Value = _
Worksheets("請求先データ").Cells(data_gyou_count, data_retu_count).Value
'価格
Worksheets("請求書").Cells(hinmoku_gyou_count, 7).Value = _
tanka * Worksheets("請求先データ").Cells(data_gyou_count, data_retu_count).Value
hinmoku_gyou_count = hinmoku_gyou_count + 1
End If
data_retu_count = data_retu_count + 1
Loop
'印刷
Worksheets("請求書").PrintOut
'書き込んだデータを消去
Worksheets("請求書").Range("A5").Value = ""
Worksheets("請求書").Range("A8").Value = ""
Worksheets("請求書").Range("A9").Value = ""
Worksheets("請求書").Range("A10").Value = ""
Worksheets("請求書").Range("A19:G21").Value = ""
'行を一つ進める・変数再初期化
data_retu_count = 5
data_gyou_count = data_gyou_count + 1
hinmoku_gyou_count = 19
'「会社名」が「計」まで行ったらループを抜ける
If Worksheets("請求先データ").Cells(data_gyou_count, 1).Value = "計" Then
Exit Do
End If
Loop
MsgBox "完了"
End Sub
'シート「単価一覧」から品目ごとの単価を選び出す
Sub my_choose_tanka()
Dim i As Integer
i = 2
Do While Worksheets("単価一覧").Cells(i, 1).Value <> ""
If Worksheets("単価一覧").Cells(i, 1).Value = Worksheets("請求先データ").Cells(1, data_retu_count).Value Then
tanka = Worksheets("単価一覧").Cells(i, 2).Value
Exit Do
Else
tanka = 0
End If
i = i + 1
Loop
End Sub