エクセルのマクロ・Criteria1:=の扱いについて
エクセルのマクロ・Criteria1:=の扱いについて
お世話になっております。
エクセルで、「部署全体で担当している案件の一覧」を月ごとにまとめております。
これを月初に、
フィルタで担当者別に案件表示し、それを手動で印刷して、各人に配布しているのですが、
マクロで処理したいと考えています。
記録マクロを使用し、フィルタでAさんを抽出し印刷という工程を
下記のとおり、確認したのですが
---------------------------
Sub Macro1()
'
' Macro1 Macro
'
'
ActiveSheet.Range("$A$2:$EJ$1503").AutoFilter Field:=10, Criteria1:="A さん"
ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)"
ActiveWindow.SmallScroll Down:=81
End Sub
----------------------
Bさん、Cさんと順々に印刷させていくには、
上記と同様の内容のスクリプトをCriteria1:="B さん"に変えていくしか方法がないのでしょうか?
これでは人数分スクリプトを用意しなくてはならず、また人員の変動のたびに
Aさんは削除、Dさんを追加などと、手間がかかります。
月初毎にフィルタをかけて担当者別に印刷を行う効率の良い方法はないものでしょうか
アドバイス等お願い申し上げます。
お礼
お礼遅くなって申し訳ございません。解決いたしました。 どうもありがとうございました。 質問は、記入用から一覧表の部署毎の一番下に挿入できるようにマクロを組みましたがまだマクロ初心者で部署毎にマクロを作ったので一つにしようと "Criteria1:="後に関数とか入れてみましたがだめだったので質問しました。コードは長いので以下一部をだします。 Sub 記入() Sheets("一覧表").Select Columns("D:G").Select Selection.AutoFilter Selection.AutoFilter Field:=4, Criteria1:="営業" Range("G1").Select Range(Selection, Selection.End(xlDown)).Select Dim x1 As Integer, y1 As Integer Dim z1 As Long y1 = Range("A:A").Column z1 = Range("G1").End(xlDown).Row With ActiveSheet For x1 = 1 To y1 Range(Cells(z1 + 1, x1), Cells(z1 + 1, x1)).Select Selection.EntireRow.Insert Sheets("記入用").Select Range("A13").Select Selection.Copy Sheets("一覧表").Select ActiveCell.Select Selection.PasteSpecial Paste:=xlValues Next x1 End With Dim x2 As Integer, y2 As Integer Dim z2 As Long y2 = Range("B:B").Column z2 = Range("G1").End(xlDown).Row With ActiveSheet For x2 = 2 To y2 Range(Cells(z2 + 1, x2), Cells(z2 + 1, x2)).Select Sheets("記入用").Select Range("B13").Select Selection.Copy Sheets("一覧表").Select ActiveCell.Select ActiveSheet.Paste Selection.Font.ColorIndex = 0 Next x2 End With