- 締切済み
オートフィルターで抽出してコピー&印刷するマクロ
いつもお世話になります。 エクセル2002です。 (1)オートフィルターでデータを抽出(部署ごと)する。(インプットボックスで) (2)抽出された行を1行ずつコピーし、【編集シート】のA1セルに貼り付け (3)【印刷シート】の印刷 (データが3行あれば3枚の印刷がしたいのです) 《データ》 A列 B列 1 (部署)(商品名) 2 01 商品1 3 01 商品2 4 02 商品1 5 02 商品3 ・・・・・・・・・・ ---------------- Sub Macro1() Dim 部署 部署 = InputBox("部署コードを入れてください") Selection.AutoFilter Field:=1, Criteria1:=部署 Range("A1").Select End Sub ------------------ ↑のマクロにどう追加すればよいのかわからないので、教えてください。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- end-u
- ベストアンサー率79% (496/625)
ユーザー操作を考えた場合、 >(1)オートフィルターでデータを抽出(部署ごと)する。(インプットボックスで) ここは入力方式ではなくてリストからの選択方式のほうが良いのでは。 その場合、Application.Dialogs(xlDialogFilter)を使うと、 Excel既定のオートフィルタ.オプションダイアログを活用できます。 http://officetanaka.com/patio/patio.cgi?mode=view&no=1353 似たような案件がありましたので参考にしてみてください。
- imogasi
- ベストアンサー率27% (4737/17069)
大事なところを丸投げしていて、実質コードを書いてくださいというタイプだ。 マクロの記録で下記のコード前半ぐらいすぐ判るはず。それさえもやってないのかな。 しかしWEBで調べても、コード後半の処理は関連記事は少ないと思った。 Sub Macro1() Dim 部署 Dim cl 部署 = InputBox("部署コードを入れてください") Range("A1").CurrentRegion.Select Selection.AutoFilter Field:=1, Criteria1:=部署 Selection.SpecialCells(xlCellTypeVisible).Select For Each cl In Selection If cl.Column = 1 And cl.Row > 1 Then Worksheets("Sheet2").Range("B2") = cl Worksheets("Sheet2").Range("B4") = cl.Offset(0, 1) Worksheets("Sheet2").Range("A1:C20").PrintOut '(印刷ルーチン) End If Next End Sub ーーー 例データ Sheet1のA1:B6 部署コード 商品名 01 商品1 01 商品2 02 商品1 02 商品3 01 商品4 ーーー Sheet1をアクチブにして、 実行すると 01を指定した場合 Sheet2にデータが一時的にセットされて(B2セルに部署コード、B4セルに商品名をセット) 01 商品1 で1枚 01 商品2 で1枚 01 商品4 で1枚 各々印刷される(テスト済み)。 C列以右列にもデーがある場合、 Worksheets("Sheet2").Range("B4") = cl.Offset(0, 1)の1を2,3、・・と変えたコードを連ねてください。 Sheet2は罫線、見出し、書式(いろ、フォント等)、列幅、行高等はVBA初心者のうちは手操作で設定したほうが良い。 部署コードのセットするセル位置、商品のセットするセル位置は質問者の適当なセルに変えてください。 空白セルがありえる場合は、印刷後、内容をセットするセルは空白にして、次の行のデータのセットを始めてください。 印刷の諸設定は必要があれば、マクロの記録をとって勉強のこと。 原データは間に空白行や列が無いデータであること。
お礼
ありがとうございました。 VBAがさっぱりわからないため、どこをどのように変えてよいのかわからず、マル投げして申し訳ありませんでした。 とっても助かりました。このまま使わせてもらいます。
- fujillin
- ベストアンサー率61% (1594/2576)
マクロの自動記録を試してみることをお薦めします。 「ツール」-「マクロ」-「新しいマクロの記録」 これにより、手作業の内容がマクロに記録できます。 実際の使用に足るものにするには、上でできたものを多少一般化する必要がありますが、処理の全体の流れは変わらないはずです。 そこでわからないことがあれば、その部分について質問なさるのがよろしいかと思います。
お礼
早速のお返事ありがとうございました。 手作業のマクロの記録はしてみたのですが、どこをどのように変えてよいのかわからなかったので省いてしまいました。申し訳ありませんでした。
お礼
調べていただいてありがとうございました。 参考にさせてもらいます。