• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルのマクロ・Criteria1:=の扱いについて)

エクセルのマクロ・Criteria1:=の扱いについて

このQ&Aのポイント
  • エクセルで部署全体で担当している案件の一覧を月ごとにまとめている際に、マクロを使用して効率的に担当者別に印刷を行う方法について教えてください。
  • 現在は記録マクロを使用して個別にフィルタをかけて印刷していますが、人員の変動や手間の問題があります。
  • 月初毎にフィルタをかけて自動的に担当者別に印刷する方法があれば助かります。アドバイスをお願いします。

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

  • ベストアンサー
回答No.2

簡単な 担当者リストを作り(多分何らかの形で今もあると思うのですが) よく使われる 繰り返し制御で 実現出来ると思います。  例えば 「担当者リスト」と言うシートの 2行目に C列(3列目)から Aさん、D列にBさん・・・  ・・と20人分v列(22列目)まで担当者名の枠があるとします(空欄があっても可)。 以下にfor~nextを付け加えてみました、動きを 考えてみてください ----------------------------- Sub Macro1() ' ' Macro1 Macro ' Dim 担当者 As String '「担当者」という変数を 文字列型で宣言 Dim I As Integer '繰り返し制御用の汎用の変数を 整数型で宣言 ' For I = 3 To 22 'I が 3~22まで Nextとの間を繰り返す 担当者 = Worksheets("担当者リスト").Cells(2, I).Value '↑ 変数「担当者」に「担当者リスト」シートの2行目のI列目の値を代入 If 担当者 <> "" Then ActiveSheet.Range("$A$2:$EJ$1503").AutoFilter Field:=10, Criteria1:=担当者 ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)" End If Next ActiveWindow.SmallScroll Down:=81 End Sub --------------------------------- たぶん マクロの自動記録で作成されたものでしょうから、変数を使ったり、繰り返し制御は記録出来ませんので、単純なことでも、迷われたと思います。 それと、、  ExecuteExcel4Macro "PRINT(1・・・・の行は、   単純に  ActiveSheet.PrintOut だけでいいでしょう。  ActiveWindow.SmallScroll Down:=81 は自動記録の時 表示位置を移動されたのが記録されたものとおもいます、不要なら削除したがいいでしょう、

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • mimeu
  • ベストアンサー率49% (39/79)
回答No.1

人数分のスクリプトを用意する必要は、モチロンありません。 但し、人数分の名前を何かの方法でプログラムに指示する必要はあります。 一例です Sub Macro1() ・・・中略・・・ ActiveSheet.Range("$A$2:$EJ$1503").AutoFilter Field:=10, Criteria1:="A さん" ・・・後略・・・ End Sub を下記のように変更します Sub Macro1(人名 As String) ・・・ ActiveSheet.Range("$A$2:$EJ$1503").AutoFilter Field:=10, Criteria1:=人名 ・・・ End Sub その上で、下記を新しく作り、実行すれば全員分できます。 Sub Main()   Macro1("Aさん")   Macro1("Bさん")   Macro1("Cさん")   ・・・以下省略・・・ End Sub

すると、全ての回答が全文表示されます。

関連するQ&A