• ベストアンサー

EXCEL 関数

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

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

#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です。

iiwa
質問者

お礼

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

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.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」が連番で入っています。 普通は同期を取るため相互に何とかするのでは? -- 上記のコードは質問者のコードのどこに入れるべきという問題ではない。 上記だけでほぼ完成形ですから。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.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 でいけると思います。

iiwa
質問者

補足

ありがとうございます。 転記・保存のマクロは下記なのですが、教えてくださったマクロはどこに入れればよいでしょうか? 教えてくださった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

関連するQ&A