• ベストアンサー

エクセルで印刷範囲を自動で指定し、印刷するマクロ

エクセルの表の中から、ある特定の文字が入っている セルを探し、そのセルから「下に3、右に2」の範囲 (文字が入っているセルは含まない)を自動的に範囲 指定して印刷するマクロをつくりたいのですが、どうすればよいでしょうか? たとえば、「○」が入力されているセルが A2だとすればA3からC5を自動的に範囲指定して印刷 するようにしたいのです。 どうぞよろしくお願いします。

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

  • ベストアンサー
  • shkwta
  • ベストアンサー率52% (966/1825)
回答No.1

売上というシートの印刷範囲をA3からC5にしたいなら Sheets("売上").PageSetup.PrintArea = "A3:C5" これは、文字列での設定になります。 もし、Cells(x, y)から下に3、右に2なら Sheets("売上").PageSetup.PrintArea = Range(Cells(x + 1, y), Cells(x + 3, y + 2)).Address というようになります。 印刷実行は Sheets("売上").PrintOut ただし、PrintOutメソッドは引数が多いのでヘルプでお調べください。 範囲を直接指定して Sheets("売上").Range("A3:C5").PrintOut も可能です。

その他の回答 (2)

  • error123
  • ベストアンサー率21% (54/247)
回答No.3

もう解答がでてますが、こんなやりかたもあります。 Sub test1() With ActiveSheet On Error GoTo line .Cells.Find(What:="○", LookIn:=xlValues, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _ , MatchByte:=False, SearchFormat:=False).Select Selection.Offset(1).Resize(3, 3).Select Selection.PrintOut Copies:=1 End With Exit Sub line: MsgBox "○がないわよ~ん!" End Sub

回答No.2

こんばんは。 ↓でどうでしょうか? -------------------- Sub test() Dim c As Range For Each c In ActiveSheet.UsedRange If c.Value = "○" Then c.Offset(1).Resize(2, 3).Select Selection.PrintOut End If Next c End Sub --------------------

関連するQ&A