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

解決済みの質問

EXCEL 関数

EXCELで倉庫への出荷指示書を作っています。
雛形に入力し「別シートへ」というボタンを押せば、転記・保存できるようになっています。
A8に「オーダーNO」、A5に「店名」、C5に「日付」を表示しています。
別シートに保存するタイミングで、「オーダーノート」という名のシートに指示書の一部内容を転記したいのですが、方法はあるでしょうか?
オーダーノートのA列に「日付」、c列に「店名」を表示したいのです。なお、B列には予め「オーダーNO」が連番で入っています。

投稿日時 - 2008-06-30 16:44:38

QNo.4140889

すぐに回答ほしいです

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

#1のmerlionXXです。
では、

Sub TEST()
Set BC = Sheets("ブランク注文書")
With Sheets("オーダーノート")
x = .Cells(Rows.Count, "A").End(xlUp).Offset(1).Row
.Cells(x, "A") = BC.Range("C5")
.Cells(x, "B") = BC.Range("A8")
.Cells(x, "C") = BC.Range("A5")
End With
BC.Copy Before:=Sheets(3)
Range("A1:G717").Copy
Range("A1:G717").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
BC.Select
Range("B7,A11:A86,D11:F86,H10:H86").ClearContents
Set BC = Nothing
End Sub

別パターンも同じ場所でOKです。

投稿日時 - 2008-06-30 18:21:24

お礼

ありがとうございました。
出来ました!
また何かあればお願い致します。

投稿日時 - 2008-07-01 11:44:51

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

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

回答(3)

ANo.3

出来るだけ、#1のお礼の、質問者のコードのような、コピー貼り付けはやめるべきです。コードがややこしくなるだけ。値の代入でよい。
オーダーノートにおける、書式その他は必要あれば別途考えるべきです。
スクロールなど不要と思う。マクロの「記録をとったからかな?
自分のコードに拘るな。
>ボタンを押せば
雛形シートの「コマンドボタン」のClickイベントに

>オーダーノート」という名のシート(sh2とする)
の、現状での最下行を求め
その次の行に、>雛形に入力した(sh1とする)、データを代入すればよい。
Set Sh1=Worksheets("雛形")
Set Sh2=Worksheets("オーダーノート")
k=Sh2.Cells(65536,"A").End(xlUp).Row+1
Sh2.Cells(k,"A")=Sh1.cells(5,"C") '日付
Sh2.Cells(k,"C")=Sh1.cells(5,"A") '店名
Sh2.Cells(k,"B")=Sh1.cells(8,"A") 'NOーー>不要?<=B列には予め「オーダーNO」が連番で入っています。
普通は同期を取るため相互に何とかするのでは?
--
上記のコードは質問者のコードのどこに入れるべきという問題ではない。
上記だけでほぼ完成形ですから。

投稿日時 - 2008-06-30 21:42:42

ANo.1

> 別シートに保存するタイミングで

それなら現在の転記・保存のマクロを掲示すれば簡単だったのですが・・・
へたに書くと現在のマクロとの関係でおかしくなるのでシート名をきっちりおさえたいのですが、雛形に入力しているシートの名前がわからないのでとりあえず「雛形」という名前にしました。

> B列には予め「オーダーNO」が連番で入っています。

その番号を検索してその行に転記させるんですか?
なら、

With Sheets("オーダーノート")
x = Application.Match(Sheets("雛形").Range("A8"), .Range("B:B"))
.Cells(x, "A") = Sheets("雛形").Range("C5")
.Cells(x, "C") = Sheets("雛形").Range("A5")
End With

でいけると思いますが無いとエラーになります。

でも連番ならオーダーNOも転記したら?

With Sheets("オーダーノート")
x = .Cells(Rows.Count, "A").End(xlUp).Offset(1).Row
.Cells(x, "A") = Sheets("雛形").Range("C5")
.Cells(x, "B") = Sheets("雛形").Range("A8")
.Cells(x, "C") = Sheets("雛形").Range("A5")
End With

でいけると思います。

投稿日時 - 2008-06-30 17:18:43

補足

ありがとうございます。
転記・保存のマクロは下記なのですが、教えてくださったマクロはどこに入れればよいでしょうか?
教えてくださった2パターンで試して、使い勝手のいい方で運用したいと思います。
2度手間になりますがご指導お願い致します。

Sheets("ブランク注文書").Copy Before:=Sheets(3)
Range("A1:G717").Select
ActiveWindow.SmallScroll Down:=-18
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("ブランク注文書").Select
Range("B7,A11:A86").Select
Range("A11").Activate
ActiveWindow.SmallScroll Down:=-69
Range("B7,A11:A86,D11:F86,H10:H86").Select
Range("H86").Activate
Application.CutCopyMode = False
Selection.ClearContents
End Sub

投稿日時 - 2008-06-30 17:26:53

あなたにオススメの質問