• 締切済み

エクセルマクロで条件で印刷がしたいのですが理解不能

エクセルのマクロで条件付きで印刷がしたいのですが、解りません… クイック印刷ボタンを押すとセルの文字列の変化(「合」&「不」の2種類)によって印刷フォームを変えたいのです。 2列目の結果を判断しA3から空白セルまで連続印刷2種類とも、一度で無理ならボタン2個準備 可 sheet4---"合" フォーム   sheet5---"不" フォーム sheet3に一覧表があります。 "合"マクロの作成したのですが、"不"をどのように入れればいいか解りません。     1 2 3 4 5 6 7 8 9 10 ..... 13 14 15 16 A2  製番 合否 種類 型式 開始 終了 工1 工2 外観 気密.....初MIN 初MAX 終MIN 終MAX A3 001 合  AA 123 1/7 1/15 良 良  良 良 0.8 0.9 1.2 1.5 A4 002 合  BB 456 1/8 1/16 良 良  良 良 0.8 0.9 1.2 1.5 A5 003 不  CC 789 1/9 1/12 良 否   良 良 0.6 0.8 - - ・ ・ A22 020 合  TT 999 1/7 1/15 良 良  良 良 0.8 0.9 1.2 1.5 Worksheets("sheet3").Activate Range("A3").Select '開始セル製造番号 'ループXの開始 Do 'アクティブセルを1つ下に移動 ActiveCell.Offset(1, 0).Select If oSht.Cells(idx, 3) = "合" Then   ' 繰り返し処理  End If '空欄であれば、プログラムを終了する 'Trim関数は前後のスペースを消去する If Trim(ActiveCell.Value) = "" Then Exit Do End If '非表示セルは印刷の対象としない If ActiveCell.EntireRow.Hidden = False Then 'これ以降、すべて印刷用シート With Worksheets("合") 'レコードの先頭セルを選択 .Range("C3").Value = ActiveCell.Offset(0, 0).Value '製造番号 .Range("L24").Value = ActiveCell.Offset(0, 2).Value '種類 .Range("F3").Value = ActiveCell.Offset(0, 3).Value '型式 .Range("C14").Value = ActiveCell.Offset(0, 4).Value '開始日 .Range("C15").Value = ActiveCell.Offset(0, 5).Value '終了日 .Range("C6").Value = ActiveCell.Offset(0, 6).Value '工程1担当 .Range("C7").Value = ActiveCell.Offset(0, 7).Value '工程2担当 .Range("C9").Value = ActiveCell.Offset(0, 9).Value '外観 .Range("C10").Value = ActiveCell.Offset(0, 10).Value '気密 .Range("C11").Value = ActiveCell.Offset(0, 13).Value '初期MIN .Range("C12").Value = ActiveCell.Offset(0, 14).Value '初期MAX .Range("C13").Value = ActiveCell.Offset(0, 15).Value '終期MIN .Range("C14").Value = ActiveCell.Offset(0, 16).Value '終期MAX 'レコードの最終セルであれば、1部印刷を実行する .PrintOut '印刷用シート終了 End With

みんなの回答

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

B列に合否が入ってるのでいいんですかね。(あなたのマクロではC列が合否になってますけど?) 要するにB列の内容に応じてどのシートを使うのか仕分けるだけです。 #ただしご相談で説明されていませんが、合否それぞれのシートでレイアウトは同一だとして。 #それからご相談の情報提供が間違って?いますが、「Sheet4」じゃなく「合」シート、「sheet5」じゃなく「否」シートだとして。 sub macro1()  dim r as long  worksheets("Sheet3").select  for r = 3 to range("A65536").end(xlup).row ’ご相談で説明されていないA列の実際の内容に対する保険として  if cells(r, "A") = "" then exit sub  if not cells(r, "A").entirerow.hidden then  with worksheets(cells(r, "B").value) ’合否  .Range("C3").Value = cells(r, "A").Value '製造番号  .Range("L24").Value = cells(r, "C").Value '種類  .Range("F3").Value = cells(r, "D").Value '型式  .Range("C14").Value = cells(r, "E").Value '開始日  .Range("C15").Value = cells(r, "F").Value '終了日 ’ この辺りから列位置が不明瞭なのでキチンと修正の事  .Range("C6").Value = cells(r, "G").Value '工程1担当  .Range("C7").Value = cells(r, "H").Value '工程2担当  .Range("C9").Value = cells(r, "I").Value '外観  .Range("C10").Value = cells(r, "J").Value '気密  .Range("C11").Value = cells(r, "K").Value '初期MIN  .Range("C12").Value = cells(r, "L").Value '初期MAX  .Range("C13").Value = cells(r, "M").Value '終期MIN  .Range("C14").Value = cells(r, "N").Value '終期MAX  .PrintOut  end with  end if  next r end sub

noname#178406
質問者

お礼

おはようございます。説明の不備申し訳ありませんでした。B列で間違いありません。質問が初めてなので解かり難かったのにご指導いただき感謝します。

関連するQ&A