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.シートに印刷ボタン作成して、印刷はできるのですが、印刷する前にプリンターの設定を変更する方法は無いのですか。
No.3ベストアンサー
- 回答日時:
シート2の表示、非表示にかかわらず、印刷を行います。
簡単にしてあります。
Sub printappointedrange()
Dim ws As Worksheet 'ワークシート
Set ws = Worksheets("シート2")
Dim ws2visible As Boolean 'シート2の表示条件
Application.ScreenUpdating = False '画面更新ストップ
ws2visible = ws.Visible
'シート2が非表示なら表示する
If ws2visible = False Then
ws.Visible = True
End If
ws.Activate
ws.PageSetup.PrintArea = "A1:AB42" '印刷範囲の指定
Application.Dialogs(xlDialogPrint).Show 'プリンタ設定
'シート2の表示を戻す
If ws2visible = False Then
ws.Visible = False
End If
Worksheets("シート1").Activate
Application.ScreenUpdating = True '画面更新
End Sub
いろいろ、教えていただきありがとうございます。
本に記載されている、マクロの記述と回答を頂いた記述が違ったので、悩みましたが、本より回答を頂いたほうが、よく分かりました。
No.2
- 回答日時:
質問の『印刷する前にプリンターの設定を変更する方法』の意味がよくわからなかったので、
xlDialogPrintとxlDialogPrinterSetupを回答したのですが、補足では、『xlDialogPrint』が使ってあり、
このままでは、
1.『xlDialogPrint』のダイアログでOKボタンを押したためにボタンがあるシート1を印刷
2.マクロの『.PrintOut』でシート2の印刷
となって、シート1、シート2が印刷されるはずです。
A.『プリンターの設定』が印刷書式の設定なら『xlDialogPageSetup』を
B.『プリンターの設定』がプリンタの切替等なら『xlDialogPrinterSetup』を使用します。
C.『印刷』のダイアログをだすのなら『xlDialogPrint』ですが、このままだとシート1も印刷してしまいます。
『印刷する前にプリンターの設定を変更する方法』がCの場合は補足してください。
No.1
- 回答日時:
中に書き込んでみました。
非表示なら表示して印刷後非表示に戻しています。
非表示でも印刷しています。(質問でここが一番分からない。非表示なら印刷する?しない?)
プリンタの設定は『'』をはずして確認して下さい。
Sub printappointedrange()
Dim Sheet1Visible As Boolean 'Sheet1のマクロ実行時のVisibleの設定
'プリンタの設定→どちらのことでしょうか。『'』をはずして試して下さい。
'Application.Dialogs(xlDialogPrint).Show
'Application.Dialogs(xlDialogPrinterSetup).Show
Sheet1Visible = Worksheets("シート1").Visible
Application.ScreenUpdating = False '画面更新をストップ
If Sheet1Visible = False Then
'非表示ならSheet1を表示する
'非表示の場合印刷しないなら Exit Sub を書く
Worksheets("シート1").Visible = True
End If
'/// ここまで追記 ///
Worksheets("シート1").Activate
'/// このマクロがどのコードウインドウにあるか分からないので ActiveSheet. を追加 ///
ActiveSheet.Range("A1:AB42").Select 'セル範囲の選択
With ActiveSheet
.PageSetup.PrintArea = Selection.Address '印刷範囲の指定
.PrintPreview '印刷
.PageSetup.PrintArea = False '印刷範囲のクリア
End With
'/// 以下を追記 ///
'元に戻す
Worksheets("シート1").Visible = Sheet1Visible
Application.ScreenUpdating = True '画面更新を戻す
End Sub
この回答への補足
質問の仕方が悪かったので、すみませんが、もう少し教えてください。
○状況
・現在シート2を非表示にしてあります。
・シート1に印刷ボタンがあります。(ボタンをマクロ登録しています・・・下記 VBAです。)
・下記のVBAで「プリンタ設定、画面更新ストップ」を追加したときに、シート1及 びシート2(選択範囲のみ)が印刷されます。
○質問
・シート1及びシート2が印刷されるので、シート1を印刷しないようにし、シート2を印刷したいのです。
・プリンタの種類によっては、プリンタ設定を2回聞いてきます。(シート1とシ ート2が印刷されるからですか)
○その他
・下記のVBAは回答を頂いたのを、私なりに修正しました。
・下記のVBAで「プリンタ設定、画面更新ストップ」を記述しない場合はシート2し か印刷されませんでした。
---------------------------------------------------------------------
Sub printappointedrange()
Dim ws As Worksheet 'ワークシート
Dim PrintFlg As Boolean '印刷するかの判定
On Error GoTo ErrorHandler 'エラー対応(非表示シート対応)
Application.Dialogs(xlDialogPrint).Show 'プリンタ設定
Application.ScreenUpdating = False '画面更新ストップ
For Each ws In Worksheets '全てのシートを調べる
With ws
Select Case .Name
Case "シート2"
.PageSetup.PrintArea = "A1:AB42" '印刷範囲の指定
.PrintOut '印刷
.PageSetup.PrintArea = "" '印刷範囲クリア
End Select
End With
Next
Exit Sub '終わり
ErrorHandler:
'シートが非表示の場合
If Err = 1004 Then
ws.Visible = True '表示する
ws.PrintOut
ws.Visible = False '非表示に戻す
End If
Resume Next '次の処理
End Sub
---------------------------------------------------------------------
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルファイルを開く時、常...
-
エクセル印刷時 一枚の書類に...
-
エクセルの一部のセルの背景色...
-
Excel 特定のシートを印刷不可...
-
エクセルの行タイトルを特定の...
-
1ヶ月分の日付を一度に出す方法...
-
エクセルで複数のシートの1枚目...
-
エクセルのマクロで複数シート...
-
エクセルで、ヘッダーに他のシ...
-
エクセルでのヘッダーをページ...
-
エクセルで行番号、列アルファ...
-
行タイトルを最終ページだけ表...
-
マクロで印刷→セルの値から部数...
-
条件によって印刷するシートを...
-
エクセルシート複数ページ印刷...
-
エクセルで複数のシートを同じ...
-
エクセルのシート名を印刷した...
-
エクセルの印刷で1枚だけ小さ...
-
カラーで一括印刷したいです
-
EXCELのbookが手差し印刷できない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルファイルを開く時、常...
-
エクセル印刷時 一枚の書類に...
-
エクセルの一部のセルの背景色...
-
マクロで印刷→セルの値から部数...
-
Excel 特定のシートを印刷不可...
-
エクセルで複数のシートの1枚目...
-
エクセルのマクロで複数シート...
-
エクセルでのヘッダーをページ...
-
エクセルで行番号、列アルファ...
-
エクセルの行タイトルを特定の...
-
1ヶ月分の日付を一度に出す方法...
-
祭の祝儀 掲示・集計ソフト
-
特定のセルに数値が入っている...
-
条件によって印刷するシートを...
-
エクセルのシート名を印刷した...
-
エクセルでシートの色がグレー...
-
エクセルで、ヘッダーに他のシ...
-
特定のシートのみ印刷できない...
-
EXCEL マクロ 条件の合ったシー...
-
エクセルの複数シートをNアップ...
おすすめ情報