VBAで特定の範囲を指定して印刷する方法について

このQ&Aのポイント
  • VBAを使用して、特定の範囲を指定して印刷する方法について説明します。
  • セルに入力された数字を使用して、VLOOKUP関数を使用して印刷ページを検索し、指定するシートを作成しています。
  • 開始ページと終了ページが同じセルに指定されている場合、エラーが発生するため、正しいセルの指定方法について教えてください。
回答を見る
  • ベストアンサー

VBAに範囲を指定して印刷

特定のセルに数字を入力することでVLOOKUPで印刷ページを 検索して指定できるシートを作成しています。 下記のようなVBAを作成しました。 印刷開始ページと印刷終了ページを指定する場合、 セルの指定はどのようにすれば、よいのでしょうか? 開始ページと終了ページが同じセルの為、 開始ページ=Rnage("セル") 終了ページ=Rnage("セル") としてしまいますと、エラーが出てしまいます。 Sub 印刷() Dim S As Long Dim B As Long S = Application.InputBox("印刷開始ページを入力", Type:=1) If 開始ページ = 0 Then Exit Sub B = Application.InputBox("印刷終了ページを入力", Type:=1) If 終了ページ = 0 Then Exit Sub ActiveSheet.PageSetup.Order = xlOverThenDown ActiveWindow.SelectedSheets.PrintOut _ From:=S, To:=B, Collate:=True End Sub 宜しくお願い致します。

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

  • ベストアンサー
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.2

ん~と >印刷開始ページと印刷終了ページを指定する場合、 >セルの指定はどのようにすれば、よいのでしょうか? S = Application.InputBox("印刷開始ページを入力", Type:=1) を S = Sheets("開始のページの数値を入れているシート").Range("開始のページの数値を入れているセル").Value Bについても同様 >開始ページと終了ページが同じセルの為、 この意味が分からないのですが、印刷するページは一枚?なのでしょうかね。

その他の回答 (1)

回答No.1

質問が分かりにくい。 もしかして、作成したVBAではInputBoxを使用してユーザーに入力してもらっている ところを、セルに入力された数値を読み取って実行するように変更したい、という ことでしょうか? >開始ページ=Rnage("セル") >終了ページ=Rnage("セル") でエラーになるとのことですが、単にRangeのスペルミスって落ちなんじゃ? 開始ページと終了ページが同値だからと言って、エラーにはならないです。 どう設定したらよいかわからない時は、マクロの自動記録で記録されたマクロを参照 するのが基本でしょう。 エラーになる場合は、ただ単にエラーになりますだけでは情報が不十分です。 エラーになった文と、エラーメッセージ位は書いて欲しいですね。

関連するQ&A

  • エクセルで連続印刷した範囲を印刷済とわかるように

    エクセルで以下のようなプログラムで変数s、eに入力の範囲でシートの連続印刷しております。印刷し終わった後ですが、変数s~eの範囲を赤くして印刷済かどうかをひと目でわかるようにしたいと思います。可能でしょうか。 Sub 範囲を指定して印刷() Dim s As Long Dim e As Long Dim i As Long On Error Resume Next s = InputBox("開始No.を入力して下さい。") If s = 0 Then Exit Sub e = InputBox("終了No.を入力して下さい。") If e = 0 Then Exit Sub For i = s To e Worksheets("A").Range("C1") = i Application.Wait Now + TimeSerial(0, 0, 10) Worksheets("B").PrintOut Next i End Sub

  • アクセスの印刷VBAを教えて下さい

    アクセス初心者です。 バージョンは2002を使っています。 ネットで探して詳しく分からないままプログラムしています。 フォームで印刷のコマンドボタンを作ってそのボタンをクリックすると表示されてる 1ページのみ印刷したいのですが全てのレコードが印刷されてしまいます。 どうすればいいのか教えて下さい。 下記が今現在のVBAです。 Private Sub 印刷_Click() Dim varCopies As Variant varCopies = InputBox("部数を数字で入力してください", "印刷部数の指定") If Len(varCopies) = 0 Then Exit Sub End If If IsNumeric(varCopies) = False Then MsgBox "部数は数字で入力してください", vbOKOnly + vbCritical, "入力エラー" Exit Sub ElseIf CLng(varCopies) = 0 Then MsgBox "部数は0以上で入力してください", vbOKOnly + vbCritical, "入力エラー" Exit Sub End If If MsgBox("印刷しますか?" & vbCrLf & "部数=" & varCopies _ , vbYesNo + vbInformation, "印刷の確認") = vbYes Then DoCmd.OpenForm "伝票", acPreview, , , acFormReadOnly DoCmd.PrintOut acPrintAll, , , , CLng(varCopies) DoCmd.Close acForm, "伝票" End If End Sub

  • VBAで自動印刷を行いたい

    "A1"セルに数字の"1"が入力されて印刷、続いて"A1"セルに数字の"2"が上書されて印刷、 続いて"A1"セルに数字の"3"が上書されて印刷、・・・・というように指定した数字になるまで印刷を行う(指定する数字は"B1"セルに入力)にはどうしたらよいでしょうか? 下記のVBAを考えましたがうまくいきません。正しい記述を教えて下さい。 Sub 印刷() Dim myCnt As Long myCnt = 1 Do Until myCnt > Range("B1") Range("A1").Value = myCnt Sheets("Book1").PrintOut Copies:=1 myCnt = myCnt + 1 Loop End Sub

  • VBAで指定範囲の整理NOを付けたい

    下記VBAで 整理NOを例えば  最初と最後を0010~0050と指定したいのですが 命令文を指導願います Sub ページ番号付印刷() Dim mypage As Integer mypage = InputBox(Prompt:="最終となるページ番号を入力してください。") For i = 1 To mypage Range("D47") = i ActiveSheet.PrintOut Next End Sub

  • EXEL VBAで印刷の指定をしたいのですが

    VBA初心者、勉強中です。 sheet1に2つの表がありまして下記のとおりボタンをクリックしたらインプットボックスが立ち上がって2つの表の1か2を指定したら範囲がぷれびゅーするということなんですが、1を入れても、2を入れてもMsgBox "1か2を入力して!しか表示しません。 さんざん調べまくりましたが、どなたかご教授お願いします。 Sub 印刷() Dim SentP As Integer On Error Resume Next SentS = InputBox("どちらを印刷?1売上 2材料") If SentP = 1 Then Range("a1:g32").Select Selection.printpreiew ElseIf SentP = 2 Then Range("j1:n41").Select Selection.PrintPreview Else MsgBox "1か2を入力して!" End If End Sub

  • VBAで指定したブックを前面に表示するには

    ブックAとブックBがあります。 ブックAのマクロの途中、InputBoxでブックBのセルを選択させて 処理終了後に再びブックAを前面に表示するには どうしたら良いでしょうか? 下記コードを実行したところ、 ブックBが前面になって終了してしまいます。 InputBoxの挙動が関係している気がするのですが、原因がわかりませんでした。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー Sub テスト() '※このマクロはブックAに書かれてます Dim rng As Range On Error Resume Next Set rng = Application.InputBox( _ Prompt:="ブックBのセルを選択してください。", _ Type:=8) On Error GoTo 0 If rng Is Nothing Then Exit Sub '~ '~ ここで処理をする '~ MsgBox "処理完了" ThisWorkbook.Activate 'ここでブックAを前面に出したい End Sub ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー ExcelはOffice365(バージョン 1902)です。 よろしくお願いします。

  • 別シートのリストを参照して印刷作業をVBA登録

    別シートのリストをVLOOKUPで参照して印刷する作業をVBA登録したいと考えています。 そこで下記のようなVBAを作成しました。 Sub 印刷() z = Application.InputBox("印刷開始番号") x = Application.InputBox("印刷終了番号") For o = z To x Range("G6").Value = o ActiveSheet.PrintOut Next End Sub セルG6をVLOOKUPで参照して、開始ページと終了ページをINPUTBOXで入力できるよに しています。 しかしエラーがでてしまいます。 どこが、問題ありますでしょうか? 宜しくお願いします。

  • VBAのinputboxで何もいれずに[OK]を押した時エラーになります

    よろしくお願い致します。 EXCELのVBAで「inputbox」を使ってセルを選択させたいと考えております。 下記のコードだと「キャンセル」や「×」で閉じられた時はmsgbox「キャンセル」が出てExit subするのですが、何も入力しないで「OK」を押した場合がどうしてもエラー(入力した数式は正しくありません)になります。 いろいろ調べて試したのですがどうしてもできず困っています。 どなたか教えてください。 Sub test() Dim myAns As Range On Error Resume Next Set myAns = Application.InputBox(Prompt:="セルを選択してください。", Title:="セル選択", Type:=8) On Error GoTo 0 If myAns Is Nothing Then MsgBox "キャンセル" Exit Sub ElseIf myAns = "" Then MsgBox "最低1つは選択してください" Exit Sub Else MsgBox myAns.Address(0, 0) End If End sub

  • VBAで、選択範囲の合計を表示するマクロを作りたい

    あるセル範囲(例えばB1:G1)にそれぞれ数値が入力されていたとします。 入力ダイアログでその範囲を指定し、その範囲内の数値の合計値を表示するマクロを作りたいのですが、やり方が分かりません。 セル範囲を入力させるプログラムはこれで合っていますか? Sub セル範囲の合計() Dim 範囲 As Range 範囲 = appllication.InputBox(prompt:="セル範囲は?", Title:="セル範囲", Type:=8) End Sub ここからどのように変えればいいでしょうか?

  • vba InputBox キャンセルなら

    Sub test() Dim i As Long i = InputBox("値をいれてください") 'キャンセルなら 'if then exit sub End Sub このような状態で、キャンセルボタンを押すかescキーを押したら、 'キャンセルなら 'if then exit sub でプロシージャーを抜けたいのですが、 キャンセルボタンを押すと、実行時エラー13になります。 (_型が一致しません。(Error13)) エラーを発生させずに、キャンセルさせるにはどうすればいいですか?

専門家に質問してみよう