人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

納品書出力のエクセルマクロをお願いいたします。

詳しくは画像をご確認ください。


シートは2つあります。


大きな流れでは、

出荷表(★)をもとにその情報を納品書にコピペします。

それを印刷。

次の顧客にうつって同様のことを繰り返します。

同じお客様がたくさんかわれたときのみ、少しややこしいですが、

あとはそうでもありません。

どうかよろしくお願いいたします。


1424951484
●拡大する


●質問者: naranara19
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● 世良満久
●0ポイント

御自力で管理が大変なようでしたら無料のソフトの利用はどうでしょうか?
maxmaシステムズ 『 こりゃ楽だ 』
http://www002.upp.so-net.ne.jp/BeHapppy/welcom.html

ご参考まで。
世良満久


naranara19さんのコメント
ご指摘ありがとうございます!いまあるものを利用してやりたいものでして。

2 ● a-kuma3
●400ポイント ベストアンサー

マクロを書いてみました。
process_slip を実行すると、「★」シートから「納品書」シートにデータをコピーして印刷します。

Const MAX_ROW = 10000  ' 突っ走るのが怖いので


Sub clear_slip()
 Set s_slip = Worksheets("納品書")
 s_slip.Range("B19:H35").ClearContents
End Sub

Sub make_slip(r1, r2)
 Set s_list = Worksheets("★")
 Set s_slip = Worksheets("納品書")

 s_slip.Cells(4, 2).Value = s_list.Cells(r1, 6).Value  ' 氏名 ← F列 ※ここを追加しました
 s_slip.Cells(6, 4).Value = s_list.Cells(r1, 8).Value  ' 〒 ← H列
 s_slip.Cells(7, 2).Value = s_list.Cells(r1, 9).Value  ' 住所 ← I列
 s_slip.Cells(13, 3).Value = s_list.Cells(r1, 10).Value  ' 電話番号 ← J列
 r_to = 19
 s1 = s2 = s3 = 0
 For r = r1 To r2
 s_slip.Cells(r_to, 2).Value = s_list.Cells(r, 1).Value  ' 商品名 ← A列
 s_slip.Cells(r_to, 8).Value = s_list.Cells(r, 3).Value  ' 金額 ← C列
 s1 = s1 + s_list.Cells(r, 3).Value  ' 金額 ← C列
 s2 = s2 + s_list.Cells(r, 4).Value  ' 送料 ← D列
 s3 = s3 + s_list.Cells(r, 5).Value  ' 合計 ← E列
 r_to = r_to + 1
 Next
 s_slip.Cells(36, 8).Value = s1
 s_slip.Cells(38, 8).Value = s2
 s_slip.Cells(39, 8).Value = s3
End Sub

Sub print_slip()
 Set s_slip = Worksheets("納品書")
 s_slip.PrintOut Preview:=False
End Sub

Sub process_slip()

 Set s_list = Worksheets("★")
 Set s_slip = Worksheets("納品書")

 r1 = 2
 r2 = 3

 Do While r2 < MAX_ROW
 If s_list.Cells(r1, 6).Value <> s_list.Cells(r2, 6).Value Then
 For r = r1 To r2 - 1 Step 17
 Call clear_slip
 rr = r + 16
 If rr > r2 - 1 Then
 rr = r2 - 1
 End If
 Call make_slip(r, rr)
 Call print_slip
 Next
 r1 = r2
 If IsEmpty(s_list.Cells(r1, 6)) Or s_list.Cells(r1, 6).Value = "" Then
 Exit Do
 End If
 End If

 r2 = r2 + 1

 Loop

End Sub

以下のことを前提としてます。

で、質問の画像では文字がつぶれてたので、よく分からなかったところがあります。
意図通りになっていないところがあるかもしれません。
以下のように値を複写しています。

因みに、氏名は一覧から複写しなくても良かったんでしょうか。
納品書だから、手書きにするということかな、という気もしてますが。



後、お金に絡むことなんで、一応、免責事項を書いておきます(ビビリです X-|
金額の確認は、人間の目でしっかりとお願いします。

(免責事項)
マクロの処理・計算の間違いによる損害が出ても、私は一切の責任を負担しません。
利用は、自己責任でお願いします。



追記です。
氏名も「★」シートから複写するようにマクロを修正しました。


naranara19さんのコメント
a-kuma3さん、再度ありがとうございました! しっかりと動いて嬉しいのですが、僕がミスしてました。納品書シートのB4に名前を黄色く塗るのを忘れていました。こちらもお願いできますでしょうか?ベストアンサー量は増量いたします。いつもすみません。(免責の件当然です。こちらのすべて責任ですのでご安心くださいませ。そんなことするわけないです。もし何かあっても、恨みすらしません。)

a-kuma3さんのコメント
>> 納品書シートのB4に名前を黄色く塗るのを忘れていました。こちらもお願いできますでしょうか? << マクロを修正しました。 一行追加してます。 >> (免責の件当然です。こちらのすべて責任ですのでご安心くださいませ。そんなことするわけないです。もし何かあっても、恨みすらしません。) << チキンと笑っておくんなまし <tt>:-)</tt>

naranara19さんのコメント
ありがとうございました!完璧でした。しかも、対応が素早くて助かります。免責の件ですが、私は上記のようにとりますが、クレーマー的な方はいくらでもいますので、a-kuma3さんの書き方はとてもいいと思います!本当にありがとうございました!(もし修正をお願いするときはまた別途依頼いたします。)
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ