みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ループで出来ませんでした。ズバリお願い致します。

達人の方へお願いします。甘い考えですがよろしくお願いします。

"売上"と"伝票"2種シートを使います。

--売上げシート内容---------------------------------------------

........A.........B............C..........D...........E............F
....ボタン..日付....名前....担当....物件.....売上げ

10...■....1/8.....あ店....S様.....10m2.....100円

11...■....1/8.....い店....O様.....50m2.....500円

12...■....1/9.....う店....Y様.....30m2.....300円

13...■....1/9.....あ店...G様.....60m2.....600円

14...■....1/11....い店...O様.....50m2.....500円

日々の売上げを毎日入力しています。1日に同じお客からの売上げを数回入力することもあります。

そして1件ごとに納品書が日々必要となります。お客によって納品書をいる・いらないが有り。

納品書の印刷には"伝票"シートのフォーマットを使用してコピー&ペースト。(選択範囲は連続していません)


"売上"B10 は "伝票" O3 へペースト(英文字オーの3)
"売上"D10 は "伝票" D5 へペースト
"売上"E10 は "伝票" S15 へペースト
"売上"EF0 は "伝票" D15 へペースト
"売上"G10 は "伝票" J15 へペースト

マクロかなにかで自動化してプリントしたいと考えてます。
後、フォーマットのクリアも。

配置したボタンにこだわりは無く、出来ればチェックボックスを並べて

チェックで選択した行を各1枚づつプリントしたいのです。「1」の打ち込みとかの選択でも可です。

自分でもHP見ながらループやなど試しましたが及びませんでした。

VLOOKUP関数を "伝票"にあてはめた場合も良かったのですが

やはりボタンひとつでプリントするのが願いです。

この難件をこの場でご指導いただけるのは甘い考えかもしれませんが

よろしくお願いします。

投稿日時 - 2008-02-12 23:38:59

QNo.3770555

困ってます

質問者が選んだベストアンサー

Sub Macro1()
Dim Sheet1 As Worksheet
Dim Sheet2 As Worksheet
Set Sheet1 = ThisWorkbook.Worksheets("売上")
Set Sheet2 = ThisWorkbook.Worksheets("伝票")
Dim baseRow As Long

' 2行目から、2列目(日付)が空になるまでループ
baseRow = 2
Do While (Sheet1.Cells(baseRow, 2).Value <> "")

'1列目(A列)に1が入っていた時のみ印刷
If (Sheet1.Cells(baseRow, 1).Value = 1) Then

' O3 に 2列目の値を代入
' D5 に 4列目の値を代入
Sheet2.Range("O3").Value = Sheet1.Cells(baseRow, 2).Value
Sheet2.Range("D5").Value = Sheet1.Cells(baseRow, 4).Value
Sheet2.Range("S15").Value = Sheet1.Cells(baseRow, 5).Value
'Sheet2.Range("D15").Value = Sheet1.Range("EF0").Value
Sheet2.Range("J15").Value = Sheet1.Cells(baseRow, 7).Value

' 印刷プレビュー
Sheet2.PrintPreview
End If

'次の行
baseRow = baseRow + 1
Loop

Set Sheet2 = Nothing
Set Sheet1 = Nothing
End Sub

投稿日時 - 2008-02-13 00:43:26

補足

 ご回答本当にありがとうございます。
実際にお会いして頭下げたい気持ちです。

 標準モジュールにそのままコピペしても印刷プレビューまでたどり着けませんでした。
何故でしょうか。返答お待ちしております。

投稿日時 - 2008-02-13 10:08:48

ANo.1

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

>画面を何度もスクロールするようなブックですがお教えいただいたマクロを実行するボタンはいつも画面上に表示しておきたいのですが何か良い方法あれば教えてください

ショートカットでよければ、

EXCEL メニュー[ ツール > マクロ > マクロ ]
でマクロダイアログを表示し
実行するマクロを選択して[オプション]を選択

ショートカットキーの入力欄でがあるので、
半角大文字の A を登録 " Ctrl + Shift +[ A ]"
で OK

後は、いつでも、[Ctrl]+[Shift]+[A] でマクロが実行されます。
(半角 a にすると [Ctrl]+[a]になる、Ctrl+AがWindows標準のショートカット(全選択)とかぶるので、[Ctrl]+[Shift]+[何か]の方がいい
キーボードの位置を考えると [Ctrl]+[Shift]+[A] が一番楽だと思う)

EXCELのメニューバーやツールバーに登録する方法もありますが
説明が面倒なのでやめておきます
(あとで、ボタンが消えたとか言うトラブルもでてきそうだし・・・)

投稿日時 - 2008-02-13 17:56:29

お礼

長々と本当にお世話になりました。
本当にありがとうございます。
短い文面ですがかなり心こめて2行打ち込みしました。
 違う分野では私にも"回答"で人助けできる部分もあると思います。
この感謝をそういう形で返していきたいと思います。
機会があればよろしくお願いいたします。

投稿日時 - 2008-02-13 19:54:56

ANo.2

' 2行目から、2列目(日付)が空になるまでループ
baseRow = 2

この部分を変更してみてください
10行目から実際のデータがあるなら
baseRow = 10

です

投稿日時 - 2008-02-13 10:31:47

お礼

ほんとに機転がきかない自分ですいません。
印刷確認できて周囲の人間も喜んでおります。貴重なお時間ありがとうございました。

ところで再度あつかましいのですが売上のシートは750行程度有り、画面を何度もスクロールするようなブックですがお教えいただいたマクロを実行するボタンはいつも画面上に表示しておきたいのですが何か良い方法あれば教えてください。自分でも勉強して考えてみます。
ありがとうございました。

投稿日時 - 2008-02-13 15:17:37

あなたにオススメの質問