Excel2003 VBAでセル指定の範囲を印刷する方法

このQ&Aのポイント
  • Excel2003でVBAを使用してボタンをクリックすると、セル指定の範囲を印刷する方法について教えてください。
  • セル指定で印刷可能な範囲を設定する方法はわかりますが、最後の行までの範囲を印刷する方法がわからないです。
  • また、11列の範囲を一枚に印刷する方法も教えていただきたいです。
回答を見る
  • ベストアンサー

Excel2003 VBAで印刷 セル指定

よろしくお願いします。 ボタン5をクリックしてある範囲を印刷したいのですが、私が知っているものはセル指定でActiveSheet.PageSetup.PrintArea = Range("A90:K130") であれが印刷可能なのですが最後の行までにしたいのですがどうしてもうまくいきません。 ActiveSheet.PageSetup.PrintArea = Range(Cells(90, 1), Cells(r, 11)) それと同時に11列全部(文字は小さくてもいいのですが)一枚に印刷したのですが よろしくお願いします。 Private Sub CommandButton5_Click() res = MsgBox("決済記録を印刷します", vbYesNo + vbQuestion) If res = vbYes Then r = Range("A65536").End(xlUp).Row + 1 'Range(Cells(90,1),Cells(r,11)) '印刷したい範囲 ActiveSheet.PageSetup.PrintArea = Range("A90:K130") ActiveSheet.PrintOut preview:=True End If End Sub

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

No2 merlionXXです。 ごめんなさい。やったつもりで一行抜けてました。 Private Sub CommandButton5_Click() res = MsgBox("決済記録を印刷します", vbYesNo + vbQuestion) If res = vbYes Then r = Range("A65536").End(xlUp).Row + 1 myAd = Range(Cells(90, 1), Cells(r, 11)).Address '印刷したい範囲 With ActiveSheet.PageSetup .PrintArea = myAd .Zoom = False .FitToPagesWide = 1 .FitToPagesTall = 1 End With ActiveWindow.SelectedSheets.PrintPreview End If End Sub でどうでしょう?

saab8743
質問者

お礼

Zoom = Falseでは小さすぎました。 Zoom = 75か65が一番良かったです。 どうもありがとうございました。

その他の回答 (2)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

Private Sub CommandButton5_Click() res = MsgBox("決済記録を印刷します", vbYesNo + vbQuestion) If res = vbYes Then r = Range("A65536").End(xlUp).Row + 1 myAd = Range(Cells(90, 1), Cells(r, 11)).Address '印刷したい範囲 With ActiveSheet.PageSetup .PrintArea = myAd .FitToPagesWide = 1 .FitToPagesTall = 1 End With ActiveWindow.SelectedSheets.PrintPreview End If End Sub では?

saab8743
質問者

補足

出来ました早速使わせてもらいます。 ありがとうございました。 >それと同時に11列全部(文字は小さくてもいいのですが)一枚に印刷したのですが これはできませんか? よろしくお願いします。

  • takana_
  • ベストアンサー率44% (21/47)
回答No.1

ActiveSheet.PageSetup.PrintArea = Range("A90").CurrentRegion とか?

関連するQ&A

  • 印刷範囲を設定するvbaコード

    エクセルシートの印刷範囲を設定するvbaコードで Sub Macro1() With ActiveSheet.PageSetup .PrintArea = "$A$1:$c$10" End With End Sub としてるのですが、 "$A$1:$c$10"の部分を Range(Cells(1, 1), Cells(10,3)) 形式でやりたいのですが、 うまくできません。 Sub Macro1() With ActiveSheet.PageSetup .PrintArea = Range(Cells(1, 1), Cells(10,3)) End With End Sub としても、全部が印刷範囲として選択されてしまいます。 というか、印刷範囲が設定されません。

  • セルを移動して印刷したい。

    Win2003 S/P3 VB6.5を使用しています。 月の勤務表を作成しています。印刷のところで悩んでいます。 作成した表の内、印刷したいセルはA1からAQ22と、跳んで、A32からAQ38の範囲。途中のA23からAQ30は印刷したくないのです。 なおかつ、1頁分の印刷範囲はA1からAQ30までですので、A32からAQ38の範囲をA23からAQ30のエリアに移動して、印刷したいのです。 また、印刷したくないA23からAQ30の範囲のデータはそのまま残しておきたい。他のシートへコピーしておく方法は行いたくありません。 下記のように作成しましたが、印刷プレビューにはA1からAQ22だったり、A32からAQ38の範囲だけでした。 解りにくいかもしれませんが、要は「あるセル範囲に、別のセル範囲を移動して印刷、印刷前の元データはそのまま残しておきたいのです。 Sub print_Click() 印刷範囲1 = "$A$1:$AQ$22" 印刷範囲2 = "$A$32:$AQ$38" ActiveSheet.PageSetup.PrintArea = 印刷範囲1 ActiveSheet.PageSetup.PrintArea = 印刷範囲2 ' Range(印刷範囲1).Select ' Range(印刷範囲2).Select ' ActiveSheet.PageSetup.PrintArea = ActiveCell.CurrentRegion.Address Stop End Sub また、この印刷マクロ(Sub print_Click())はフォームコントロールのボタン機能から呼び出していますが、通常のメニューバーの印刷、印刷プレビューとどう連動しているのでしょうか? 以上、助けてください。

  • VBAの範囲印刷設定を修正したいのですが

    VBAの初心者です。詳しく教えてください。 1.下記のVBAでシートを非表示にしたときに実行時エラー1004が出るのですが  どうしたらよいのですか。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー Sub printappointedrange() Worksheets("シート1").Activate Range("A1:AB42").Select 'セル範囲の選択 With ActiveSheet .PageSetup.PrintArea = Selection.Address '印刷範囲の指定 .PrintOut '印刷 .PageSetup.PrintArea = False '印刷範囲のクリア End With End sub ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 2.シートに印刷ボタン作成して、印刷はできるのですが、印刷する前にプリンターの設定を変更する方法は無いのですか。

  • VBA 印刷範囲設定がうまくいかない

    変数cntに値を代入し印刷範囲が変わるという事を、以下のコードで実行しようとしています。 Sub Macro1() cnt = 9 Sheets("A").Activate 範囲 = Sheets("A").Range(Cells(1, 1), Cells(33, cnt + 1)) ActiveSheet.PageSetup.PrintArea = 範囲 上記のコードですと、シート「A」のセルA1~J33までが印刷範囲になると思ったのですが、実行すると全く関係ないセルまで印刷範囲になってしまいます。 「A」シートには罫線やデータが入力されているセルが他にもあり、どうやらそれらのセルも同じく印刷範囲とされてしまっているようなのです。(例えばK列に罫線が引いてあり、セルに色がついているとK列まで印刷範囲になる) Sheets("A").Range(Cells(1, 1), Cells(33, cnt + 1)).select とすれば、望みどおりのセル範囲A1~J33がきちんと選択されるのですが、印刷範囲ではなぜこのようなことになってしまうのでしょうか。

  • エクセル2007 縦長と横長の混在で両面印刷

    現在,相対記録で作成したマクロを使っています。 Sub 予定表印刷() ActiveCell.Range("A1:I53").Select ActiveSheet.PageSetup.PrintArea = Selection.Address ActiveSheet.PageSetup.Orientation = xlPortrait ActiveSheet.PrintOut End Sub このあとに,横長で$T$2から$AX$32を絶対番地で印刷し, かつ両面印刷にしたいのですが,うまくいきません。 縦長と横長の混在はできないのでしょうか。 それとも,印刷範囲が離れているのがいけないのでしょうか。 もしかして,相対指定と絶対指定の混在がいけないのでしょうか・・・。

  • エクセル内で、一度の印刷で2つのセルに差し込み印刷をする方法

    エクセルで差し込み印刷のマクロを組んでいます。現在は下の様に宛名を名簿に書いてある順番に印刷していくマクロですが、これに「住所」のシートを作成し、B4のセルに「住所」の内容も印刷できるようにしたいのです。つまり、一度の印刷で2つのセルに差し込み印刷をしたいのです。そのようなことは可能でしょうか。 Sub 封筒印刷() Dim i As Long i = Sheets("原本").Range("A65536").End(xlUp).Row Sheets("宛名").Select ActiveSheet.PageSetup.PrintArea = "$A$1:$E$14" For i = 1 To i Range("B5").Value = Sheets("原本").Cells(i, 1).Value ActiveSheet.PrintOut Next End Sub

  • EXCELで印刷範囲指定

    マクロの記録で印刷範囲の指定を考えています。 以下のマクロを記録しました。 Sub 印刷範囲指定() Cells.Select With Selection.Font .Name = "MS Pゴシック" .Size = 9 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With Range("A1").Select With ActiveSheet.PageSetup .PrintTitleRows = "$6:$8" .PrintTitleColumns = "" End With ActiveSheet.PageSetup.PrintArea = "" With ActiveSheet.PageSetup .LeftHeader = "" .CenterHeader = "&A" .RightHeader = "" .LeftFooter = "" .CenterFooter = "&P / &N ページ" .RightFooter = "" .LeftMargin = Application.InchesToPoints(0.78740157480315) .RightMargin = Application.InchesToPoints(0.78740157480315) .TopMargin = Application.InchesToPoints(0.984251968503937) .BottomMargin = Application.InchesToPoints(0.984251968503937) .HeaderMargin = Application.InchesToPoints(0.511811023622047) .FooterMargin = Application.InchesToPoints(0.511811023622047) .PrintHeadings = False .PrintGridlines = False .PrintComments = xlPrintNoComments .PrintQuality = 600 .CenterHorizontally = False .CenterVertically = False .Orientation = xlLandscape .Draft = False .PaperSize = xlPaperA4 .FirstPageNumber = xlAutomatic .Order = xlDownThenOver .BlackAndWhite = False .Zoom = 100 End With ActiveWindow.View = xlPageBreakPreview ActiveWindow.LargeScroll ToRight:=1 ActiveSheet.PageSetup.PrintArea = "$A$1:$I$50" ActiveWindow.View = xlNormalView Columns("B:I").Select Columns("B:I").EntireColumn.AutoFit Range("A1").Select End Sub やりたいことは ・まず最初にcsvファイルをxlsファイルに取り込む機能をつけたい。 ・取り込んだcsvをシートの一番最後につける。 そのファイルを以下のように設定していきたいです。 ・列の印刷範囲を数ある列のうちA列からI列までとする。 ・行の印刷範囲をA列の最終行までとしたい。 上記マクロでここを修正すればいいというところがあれば教えてください。。

  • エクセルの印刷範囲をマクロで決めたいです。

    以前こちらで、選択範囲を印刷範囲にする方法を教えていただきました。 選択範囲は別の項目で決定されています。 With Selection Vert = .Rows.Count Side = .Columns.Count Print_range = .Cells(1, 1).Address & ":" & .Cells(Vert, Side).Address End With With ActiveSheet.PageSetup .PrintArea = Print_range .PaperSize = xlPaperA3 .Orientation = xlPortrait End With 以上の記述で無事選択範囲が印刷範囲になりました。 次に、選択範囲が何種類かのパターンに絞れる事がわかったので パターンごとに拡大縮小印刷の%も決定しようと Select Case True Case Masu = 10 ActiveSheet.PageSetup.Zoom = 100 Case Masu = 11 ActiveSheet.PageSetup.Zoom = 115 Case Masu = 12 ActiveSheet.PageSetup.Zoom = 123 Case Else ActiveSheet.PageSetup.Zoom = 100 End Select を追加したところエラーになります。 何がよくないのかさえわかりません。 よい解決策はないものでしょうか?

  • エクセルVBA印刷範囲指定とヘッダーフッター

    1か月のうちの前期と後期のシートがそれぞれあり、前期シートを範囲指定して領収書の一部を印刷したいのですがなぜか、前に作ったヘッダーとフッターが前期だけ印刷されてしまいます。 どこに隠れているのか謎なのです。前に悩みながら作ったシートがどこかに隠れているのでしょうか? また、同じ様式のシートなのですが前期は80%にしなくてもなぜか一枚に収まります。 不思議でなりません・・・全部消したはずなのですが Sub 印刷範囲設定領収書前期() With Worksheets("領収前期") .PageSetup.PrintArea = "G1:BB91" .PrintPreview End With End Sub Sub 印刷範囲設定領収書後期() With Worksheets("領収後期") .PageSetup.Zoom = 80 .PageSetup.PrintArea = "G1:BB91" .PrintPreview End With End Sub

  • エクセル VBA

    (1) Sub 印刷() With Sheets("原本") .Cells.FormatConditions.Delete .PageSetup.PrintArea = Range("A1:K73").Address .PrintOut End With End Sub としているのですが ボタンを間違って押した時も印刷がされてしまいます 押したときに 印刷しますか? はい いいえ みたいなのを確認するようにしたいのですが どうすればいいでしょうか? (2) Sub 保存() Dim MySheetName As String MySheetName = InputBox("シート名を入力してください") Sheets("9月1日").Copy After:=Sheets(Worksheets.Count) ActiveSheet.Name = MySheetName Sheets("原本").Range("A1:K73").Copy Sheets("原本").Range("A1") End Sub で原本シートをコピーして新しいシートを作成するプログラムを 作ったのですが、シート名を入力しはいを押すと作成されるのですが キャンセルを押した時も勝手にシートが作成されるのですが キャンセル時は何もシートを作成しないように したいのですが どうしたらいいでしょうか? どちらも教えて貰いながら作成したため 自分で修正できなく困ってます お手数ですがよろしくお願いします

専門家に質問してみよう