• ベストアンサー

エクセルVBA シートから抽出して伝票に印刷

初心者です。 エクセル2010を使用しています。 シート1(出庫台帳)にあるデータを、シート2(出庫依頼票)に転機させて印刷をしたいと思っています。 シート1にデータを毎日入力していくのですが、1行入力するごとに、シート1内に作成した印刷ボタンを押すと、その時一番下にある行(一番新しいデータ)が出庫依頼票に転機され、印刷プレビューがでるようにしたいのですが、どうしてもできません。 また、フォームからボタンを作りたいのですが、どこにあるのか探せません。 イメージを添付してみました。 どなたか、どうか教えてください。

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

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

回答2です。 単純なマクロですのでそのような表示がされるとは考えられません。こちらの示したコードをコピーして貼り付け実行してみてください。

wister67
質問者

お礼

できました! Private Sub CommandButton1_Click()を Sub いんさつ()にして、 Dim WS1 As Variant Dim WS2 As Variantを入れたらできました。 Variantは入れなくてもよいはずなのですが、 無いと動きませんでした。 初心者に親切に教えていただき、ありがとうございました。 感謝いたします。

その他の回答 (2)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

初めにシート1上にコマンドボタンを設置します。 「開発」タブの「挿入」からActiveXの中のコマンドボタンをクリックしてからシート1上で四角形を描くように操作します。 それによってコマンドボタンが設置されますのでボタン上で右クリックして「コードの表示」を選択します。 表示される画面で次のコードを入力します。 Private Sub CommandButton1_Click() Dim i As Long Set WS1 = Worksheets("Sheet1") Set WS2 = Worksheets("Sheet2") i = Range("A65536").End(xlUp).Row With WS2 .Range("A3") = WS1.Cells(i, "C").Value .Range("D3") = WS1.Cells(i, "A").Value .Range("E3") = WS1.Cells(i, "B").Value .Range("A6") = WS1.Cells(i, "D").Value .Range("C6") = WS1.Cells(i, "E").Value .Range("D6") = WS1.Cells(i, "F").Value .Range("E6") = WS1.Cells(i, "G").Value End With WS2.PrintPreview End Sub 最後に「開発」タブ上の「デザインモード」がアクティブ状態にありますのでクリックして解除します。 これでシート1上のコマンドボタンを押すことでお望みの操作が行われます。

wister67
質問者

補足

ありがとうございます。 入力してみたのですが、 コンパイルエラー オブジェクトが必要です。 とコメントがでました。 もし、お時間がありましたら、再度ご回答いただけると とてもありがたいです。

回答No.1

シート2のA1に、シート1のA列最終行のデータをコピーする方法です。 Sheet2.Range("A1").Value = Sheet1.Range("A1").End(xlDown).Value 画像が少し見にくいのですが、画像通りの場所で、商品名とコードだけを例に… '商品名 Sheet2.Range("A6").Value = Sheet1.Range("D1").End(xlDown).Value 'コード Sheet2.Range("C6").Value = Sheet1.Range("E1").End(xlDown).Value 'プレビュー表示 Sheet2.PrintPreview この調子でセルのアドレスを調整すれば、ほかのデータも取得できると思います。 単純にD列とE列の最終行を取得していますので、 合計欄や平均欄などを下につくると、思い通りに動かなくなります。 またデータが1つもない場合の動作にも気を付けましょう。 (おそらく空白になると思います) フォームに関しては、下記が参考になるかもしれません。 http://blogs.yahoo.co.jp/booonsak/431394.html 上記HPでわからなければ、わからないところをよりしぼったうえで、 もう一度別の質問として投稿するほうがいいと思われます。

wister67
質問者

お礼

ありがとうございます。 見えにくい画像でしたのに回答をいただき、とても感謝しています。フォームも探せました。ありがとうございました。

関連するQ&A