電子書籍の厳選無料作品が豊富!

いつもお世話になります。
エクセル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
------------------

↑のマクロにどう追加すればよいのかわからないので、教えてください。
よろしくお願いします。

A 回答 (3件)

ユーザー操作を考えた場合、


>(1)オートフィルターでデータを抽出(部署ごと)する。(インプットボックスで)
ここは入力方式ではなくてリストからの選択方式のほうが良いのでは。

その場合、Application.Dialogs(xlDialogFilter)を使うと、
Excel既定のオートフィルタ.オプションダイアログを活用できます。
http://officetanaka.com/patio/patio.cgi?mode=vie …
似たような案件がありましたので参考にしてみてください。
    • good
    • 0
この回答へのお礼

調べていただいてありがとうございました。
参考にさせてもらいます。

お礼日時:2008/11/01 08:29

大事なところを丸投げしていて、実質コードを書いてくださいというタイプだ。


マクロの記録で下記のコード前半ぐらいすぐ判るはず。それさえもやってないのかな。
しかし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初心者のうちは手操作で設定したほうが良い。
部署コードのセットするセル位置、商品のセットするセル位置は質問者の適当なセルに変えてください。
空白セルがありえる場合は、印刷後、内容をセットするセルは空白にして、次の行のデータのセットを始めてください。
印刷の諸設定は必要があれば、マクロの記録をとって勉強のこと。
原データは間に空白行や列が無いデータであること。
    • good
    • 0
この回答へのお礼

ありがとうございました。
VBAがさっぱりわからないため、どこをどのように変えてよいのかわからず、マル投げして申し訳ありませんでした。
とっても助かりました。このまま使わせてもらいます。

お礼日時:2008/11/01 08:28

マクロの自動記録を試してみることをお薦めします。


「ツール」-「マクロ」-「新しいマクロの記録」

これにより、手作業の内容がマクロに記録できます。
実際の使用に足るものにするには、上でできたものを多少一般化する必要がありますが、処理の全体の流れは変わらないはずです。

そこでわからないことがあれば、その部分について質問なさるのがよろしいかと思います。
    • good
    • 0
この回答へのお礼

早速のお返事ありがとうございました。
手作業のマクロの記録はしてみたのですが、どこをどのように変えてよいのかわからなかったので省いてしまいました。申し訳ありませんでした。

お礼日時:2008/11/01 08:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!