- ベストアンサー
エクセルVBA シートから抽出して伝票に印刷
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
回答2です。 単純なマクロですのでそのような表示がされるとは考えられません。こちらの示したコードをコピーして貼り付け実行してみてください。
その他の回答 (2)
- KURUMITO
- ベストアンサー率42% (1835/4283)
初めにシート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上のコマンドボタンを押すことでお望みの操作が行われます。
補足
ありがとうございます。 入力してみたのですが、 コンパイルエラー オブジェクトが必要です。 とコメントがでました。 もし、お時間がありましたら、再度ご回答いただけると とてもありがたいです。
- sonyfreak
- ベストアンサー率50% (4/8)
シート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でわからなければ、わからないところをよりしぼったうえで、 もう一度別の質問として投稿するほうがいいと思われます。
お礼
ありがとうございます。 見えにくい画像でしたのに回答をいただき、とても感謝しています。フォームも探せました。ありがとうございました。
お礼
できました! Private Sub CommandButton1_Click()を Sub いんさつ()にして、 Dim WS1 As Variant Dim WS2 As Variantを入れたらできました。 Variantは入れなくてもよいはずなのですが、 無いと動きませんでした。 初心者に親切に教えていただき、ありがとうございました。 感謝いたします。