• ベストアンサー

印刷範囲の変更

印刷範囲の自動変更が可能かどうかお教え下さい。  A B C D E 1      ☆ 2 3 4 A1~C3の印刷範囲指定は ActiveSheet.Range("A1:C3").Select Selection.PrintOut Copies:=1 でよろしいですね? 任意のセル、仮にE1に数字で1を入れた場合にA1:C1範囲で、2を入れた場合にA1:C2の範囲で、3を入れた場合はA1:C3といったように印刷範囲をセルE1の数字で変更できるコマンドボタンの設定はできますでしょうか? 宜しくお教え下さい。

  • ns_
  • お礼率85% (29/34)

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

>コマンドボタンの設定はできますでしょうか コマンドボタンの設定でも出来るが、使わなくても出来る。 Sub test02() MsgBox "印刷行数をE1にセットせよ!" x = Cells(1, "E") Range(Cells(1, "A"), Cells(x, "D")).Select Selection.PrintOut End Sub E1に3とすると3行、5とすると5行印刷しました。 コマンドボタンを使わない場合は、E1セルの値が正しいか MsgBoxを出すのが好いかも。

ns_
質問者

お礼

早速のご返事を有難う御座います。 私はまだVBの勉強を始めたばかりの初心者でメッセージボックス関数については、まだよく理解していないので折角の回答でありますが申し訳ありません。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

>初心者でメッセージボックス関数については、まだよく理解していないので折角の回答でありますが MsgBox関数はなにも難しいものでなく、その後の””で括った文字を画面表示するものです。 まず1度やって見て、反応が欲しいです。 ○また本件でMsgBoxを使うか使わないかは、本筋と関係ありませんから、その行を削除してもかまいません。

ns_
質問者

お礼

コマンドボタンを作成し Private Sub CommandButton1_Click() MsgBox "印刷行数をE1にセットせよ!" x = Cells(1, "E") Range(Cells(1, "A"), Cells(x, "D")).Select Selection.PrintOut End Sub にて問題が解決いたしました。 本当に助かりました、どうも有難う御座いました。

関連するQ&A

  • 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 シート毎に同じ動作をしたい・・・

    エクセルVBAでシート毎に同じ動作をしたいのです。 例えば A・B・C・D・E とシートがあるのですが、A以外のものを全部印刷したいのです。 今までは Worksheets("B").Select Range("A1:AG44").Select Selection.PrintOut From:=1, To:=1, Copies:=1, Collate:=True Worksheets("C").Select Range("A1:AG44").Select Selection.PrintOut From:=1, To:=1, Copies:=1, Collate:=True と これを繰り返していたのです。 これをやると文章も長くなりますし、シート名が変わったときには、VBAもすべて書き直しと言う状況になってしまいます。 何か打開策はありますでしょうか? よろしくお願いいたします。

  • 印刷範囲の設定がうまくいきません。教えてください

    エクセルのマクロで、データの5列目の最終行を探し、その行の一列目から右に12列、上に20行の範囲を印刷したいのですが、下記のように記述すると、一列目の一行目から12列目の最終行まで印刷されてしまいます。 どのように記述すればよいのでしょうか。 Cells(ActiveSheet.Rows.Count, 5).End(xlUp).Offset(0).Select ActiveCell.Offset(0, -4).Range("a1").Select 上 = ActiveCell.Row - 20 右 = 14 Range(ActiveCell, Cells(上, 右)).Select Range(ActiveCell, Cells(上, 右)).Activate ActiveSheet.PageSetup.PrintArea = ActiveCell.CurrentRegion.Address ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

  • エクセルのマクロの編集で困っています。

    エクセルの印刷のマクロで Range("A1:A12").Select Selection.PrintOut Copies:=1 Range("D2").Select End Sub のマクロで Copies:=1の枚数を 任意の枚数にしたいのですが、どのように記述したらよいか 解りません。1を"?"に変えると 実行エラー’1004’ RangeクラスのPrintOutメッソドが失敗しました。 のエラーが出ます。 よろしくお願い致します。

  • VBAで印刷したい。

    シートが3枚あります。 ・回答フォーム ・採点 ・判定 この"回答フォーム"のシートにボタンを作成して クリックすると"採点"の印刷範囲を印刷したいのですが うまく行きません。 よろしくお願い致します。 Private Sub 採点を印刷_Click() Sheets("採点").Select Range("$A$1:$O$41").Select Selection.PrintOut copies:=1 Sheets("回答フォーム").Select End Sub

  • マクロを使って印刷範囲を指定したのに

    エクセルでボタンをクリックすると印刷範囲を指定し印刷プレビューまで行えるようにマクロを登録しました。 (A~C列+J~U列)を印刷したいので、D~I列を非表示にし、その後A~Uを選択→印刷→選択した部分にチェック→印刷プレビュー→印刷の方法でマクロ登録しました。登録作業中は正しく印刷できましたが、実際にボタンをクリックするとプレビューには(A~C列+M~U列)しか表示されません。 何度やり直してもダメで、D:Oを非表示にしてA:AAを選択後に印刷プレビューする場合は(A~C列+P~AA列)が正しく印刷できました。非表示にする列が違う場合はできたのに、どこがいけないのでしょうか? 以下のような感じになっています。 Columns("D:I").Select Selection.EntireColumn.Hidden = True Range("A4:U43").Select Selection.PrintOut Copies:=1, Preview:=True, Collate:=True ActiveWindow.LargeScroll Down:=-1 Columns("C:J").Select Selection.EntireColumn.Hidden = False End Sub 説明がうまくできないのですが、宜しくお願いします。

  • エクセルVBAで教えて下さい。

    A1のセルに [ 1- 5] 4.05398e-01 3.63385e-01 -2.22992e-01 9.89158e-03 -6.43695e-02 A2のセルに [ 6-10] -5.12224e-04 4.07480e-04 -2.73746e-04 -1.77853e-02 -2.13805e-03 A3のセルに [11-15] -6.88489e-03 -2.06765e-02 -9.44633e-03 6.97059e-03 -1.28400e-02 と、このような感じでA7セルまで同じ感じでスペースで空いた数値が入力されています。 A8のセルのみ [36-37] -6.39210e-03 -1.55806e-03 と入力されております。 まず行いたいのはスペースが空いてる部分で、それぞれの数値を各セルに分けたいです。 A1のセルに入力されている [ 1- 5] 4.05398e-01 3.63385e-01 -2.22992e-01 9.89158e-03 -6.43695e-02 ならば A1に[1-5] B1セルに4.05398e-01 C1セルに3.63385e-01 のように これをA1からA8のセルで行ったあと指定のセルを30行目に貼り付けます。 E1→A29 C2→B29 D2→C29 E2→D29 E3→E29 F3→F29 B4→G29 D5→H29 E5→I29 F5→J29 貼り付けのデータは増えていきます。つまり、30行目にデータが入ってる場合は そのデータが1行下の行に下がり、新たなデータが30行目に追加されます。 このようにして、データが最大で58行目まで追加される可能性があります。 最小であれば30行目、31行目の2つしかない場合あります。 この時、0の近似値を各列のセルから探し、当てはまるセルを赤く塗り潰すというのが 今回行いたいことです。 A列ならA30~A58までの中で0の近似値を探し、当てはまるセルを赤く塗り潰す。 ただ空白の場合は無視してもらいたいです。0の近似値だと空白が選択されてしまうので。 近似値探しの前までならマクロがありますのでご参照下さい。 Sub Macro4() ' ' Macro4 Macro ' ' Range("A1:A8").Select Selection.TextToColumns Destination:=Range("A1"), DataType:=xlFixedWidth, _ FieldInfo:=Array(Array(0, 1), Array(7, 1), Array(21, 1), Array(34, 1), Array(47, 1), _ Array(60, 1)), TrailingMinusNumbers:=True Range("A1").Select Range("E1").Select Selection.Copy Range("A29").Select ActiveSheet.Paste Range("C2:E2").Select Application.CutCopyMode = False Selection.Copy Range("B29").Select ActiveSheet.Paste Range("E3:F3").Select Application.CutCopyMode = False Selection.Copy Range("E29").Select ActiveSheet.Paste Range("B4").Select Application.CutCopyMode = False Selection.Copy Range("G29").Select ActiveSheet.Paste Range("D5:F5").Select Application.CutCopyMode = False Selection.Copy Range("H29").Select ActiveSheet.Paste Range("J7").Select Application.CutCopyMode = False Range("A29:K29").Select Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Range("A29:K29").Select With Selection.Interior .Pattern = xlNone .TintAndShade = 0 .PatternTintAndShade = 0 End With Range("A29").Select Range("A1:F8").Select Selection.ClearContents Range("A1").Select Range("K29").Select With Selection.Interior .Pattern = xlNone .TintAndShade = 0 .PatternTintAndShade = 0 End With Selection.NumberFormatLocal = "G/標準" End Sub わかりずらい質問ですみませんが、ご指導の程 お願い致します。

  • Excelダイアログボックスのボタン命令

    VBAの初心者です。 Excelでダイアログボックスを作りました。ボタンを押したとき、ワークシートの選択した範囲の印刷をさせたいと思っています。 ダイアログボックスのボタンに「ボタン2_Click」と名付けた下記のマクロを登録しました。 Sub ボタン2_Click() With DialogSheets(1) Sheets("Sheet1").Select Range("A3:G12").Select Selection.PrintOut Copies:=1, Collate:=True Range("A13:G18").Select Selection.PrintOut Copies:=1, Collate:=True Range("K18").Select End With End Sub 「ボタン2_Click」マクロは、直接実行すれば希望どおり印刷できます。 しかし、ダイアログボックスのボタンを押した場合には、Range("A3:G12").Selectまで実行しますが、そのあと次のメッセージが出て動きません。 実行時エラー'1004': Range クラスの PrintOut メソッドが失敗しました。 どう修正したらよいのか教えて下さい。よろしくお願いします。

  • マクロで印刷ができません

    簡単な表を作成し、デザインモードでフォームコントロールでボタンを作成し、マクロの作成をしました。 印刷するためにボタンをクリックしても 印刷プレビューで画面が止まってしまいます。 ところがプレビュー画面を閉じると印刷が始まります。 何度やりかえてもマクロで最後まで印刷ができません。 記述は次のようになっています。 プリントも記述されているようなのですが・・・・ エクセル2007を使っています。 どなたか助けてください Sub ボタン3_Click() ' ' ボタン3_Click Macro ' ' ActiveSheet.Shapes("Button 3").Select Selection.Characters.Text = "ボタン 3" Range("B3:E12").Select ActiveSheet.PageSetup.PrintArea = "$B$3:$E$12" ActiveWindow.SelectedSheets.PrintPreview ActiveWindow.SelectedSheets.PrintOut Copies:=1 End Sub

  • エクセル2007 印刷マクロ

    A1からE25までを印刷したいのですが,現在このようにしています。 ActiveSheet.PageSetup.PrintArea = "$A$1:$E$12" ActiveWindow.SelectedSheets.PrintOut Copies:=1 ActiveSheet.PageSetup.PrintArea = "$A$13:$E$25" ActiveWindow.SelectedSheets.PrintOut Copies:=1 これを,ActiveSheet.PageSetup.PrintArea = "$A$1:$E$25" にすると,1枚目と2枚目の区切りが自分の思うようになりません。 改ページプレビューを使って,ページ区切りを設定するのではなく, マクロで何とかしたいと考えています。 1枚目はA1:E12,2枚目はA13:E25に固定する方法を教えて下さい。

専門家に質問してみよう