No.4ベストアンサー
- 回答日時:
> 印刷できて”0件印刷しました。
”になってしまいます。提示したコードでは、そんなことは、絶対あり得ません。
「指定事項」以外のコードを<<変更>>したとしか考えられませんよ。
指定項目を1個追加しましたので、これでテストしてみてください。
今度のは、指定事項だけで設定出来ますので、他のコードは、変更しないでください。
Sub 最終処理分印刷()
'----- 印刷範囲 列指定 ---------
Const Sh = "Sheet1" ' <----- シート名指定
Const Left_Col = "A" ' <------ 印刷範囲の左端列
Const Right_Col = "P" ' <----- 印刷範囲の右端列
Const Target_Col = "O" ' <----- 印刷データ判定列(日付形式)
Const Prev_Mode = 0 ' <----- 0 = 直接印刷 / 1 = プレビュー
'------------------------------
Dim TopRw As Long
Dim EndRw As Long
Dim Target_Date As Date
Dim N As Long
With Worksheets(Sh)
EndRw = .Range(Target_Col & "65536").End(xlUp).Row
If Not IsDate(.Range(Target_Col & EndRw).Value) Then
MsgBox "印刷するデータがありません。 終了します。"
Exit Sub
Else
Target_Date = .Range(Target_Col & EndRw).Value
End If
TopRw = EndRw
Do While .Range(Target_Col & TopRw).Value = _
.Range(Target_Col & TopRw).Offset(-1).Value
TopRw = TopRw - 1
If TopRw = 1 Then Exit Do
Loop
N = EndRw - TopRw + 1
.PageSetup.PrintArea = Range(Left_Col & TopRw & _
":" & Right_Col & EndRw).Address
If Err.Number > 0 Then
MsgBox "プリンターの準備が、出来ていません。"
Exit Sub
End If
If Prev_Mode = 1 Then
.PrintOut preview:=True
Else
.PrintOut preview:=False
MsgBox Target_Date & " 入力分を " & N & _
" 件 印刷しました。", , "印刷完了"
End If
.PageSetup.PrintArea = False
End With
End Sub
何度も何度もすみませんでした。出来ました。
指定事項のみ変更でよかったのですね。
コードの中の"N"も変更したからのようです。VBA素人の質問にお付き合い頂きありがとうございました。
No.3
- 回答日時:
> メッセージボックスに件数に関係なく”0件印刷しました。
”と表示されます。「印刷されたのに」0件 ということですか?
それとも、印刷されるべきデータがあるのに「印刷されずに」ということですか。
ちょっと考えれませんが、もう一度、コードを貼り付け直してやってみてもらえませんか。
こちらで、色々検証していますが、そのような現象は、出ませんし、印刷しないのに
メッセージボックスが表示になるコードには、なっていないのですが・・・
日付データは、N列 ですよね。
N列の右にも印刷データがあるのですか?
現在は、「右端列を指定(日付データ)」で指定した列が印刷最終列にしています。
これとは、関係ありませんが、プリンターの準備が出来ていないとき、メッセージを出す
ようにしましたので、下記のコードを使ってください。
Sub 最終処理日分印刷()
'----- 印刷範囲 列指定 --------
Const Sh = "Sheet1" ' <------- シート名指定
Const Left_Col = "A" ' <------ 左端列を指定
Const Right_Col = "N" ' <------ 右端列を指定(日付データ)
Const Prev_Mode = 0 ' <--------- 0 = 直接印刷 / 1 = プレビューモード
'------------------------------
Dim TopRw As Long
Dim EndRw As Long
Dim Target_Date As Date
Dim N As Long
On Error Resume Next
With Worksheets(Sh)
EndRw = .Range("N65536").End(xlUp).Row
If Not IsDate(.Range("N" & EndRw).Value) Then
MsgBox "印刷するデータがありません。 終了します。"
Exit Sub
Else
Target_Date = .Range("N" & EndRw).Value
End If
TopRw = EndRw
Do While .Range("N" & TopRw).Value = .Range("N" & TopRw).Offset(-1).Value
TopRw = TopRw - 1
If TopRw = 1 Then Exit Do
Loop
N = EndRw - TopRw + 1
.PageSetup.PrintArea = Range(Left_Col & TopRw & ":" & Right_Col & EndRw).Address
If Err.Number > 0 Then
MsgBox "プリンターの準備が、出来ていません。"
Exit Sub
End If
If Prev_Mode = 1 Then
.PrintOut preview:=True
Else
.PrintOut preview:=False
MsgBox Target_Date & " 入力分を " & N & " 件 印刷しました。", , "印刷完了"
End If
.PageSetup.PrintArea = False
End With
End Sub
この回答への補足
ja7awu さま 色々とありがとうございます。
コードを貼り付け直してみたところ印刷できました。がしかし・・・
データを2~3増やして日付データをN列からO列あるいはP列になった時にコードの”N”を”O”または”P”にただ単に変更して実行したところ、印刷できて”0件印刷しました。”になってしまいます。
お力をお貸しください。
No.2
- 回答日時:
可也融通性を持たせて作成しましたが、これで如何でしょうか。
メニュー[ファイル]--->[ページ設定]--->[シート]タブで、「行のタイトル」欄に、
見出し行の部分を設定します。
例えば、見出し部分が、1行だけの場合は、$1:$1 と指定します。
標準モジュールに記述
Sub 最終処理日分印刷()
'----- 印刷範囲 列指定 ---------
Const Sh = "Sheet1" ' シート名指定
Const Left_Col = "A" ' 左端列を指定
Const Right_Col = "N" ' 右端列を指定
Const Prev_Mode = 0 ' 0 = 直接印刷 / 1 = プレビューモード
'------------------------------
Dim TopRw As Long
Dim EndRw As Long
Dim Target_Date As Date
Dim N As Long
With Worksheets(Sh)
EndRw = .Range("N65536").End(xlUp).Row
If Not IsDate(.Range("N" & EndRw).Value) Then
MsgBox "印刷するデータがありません。 終了します。"
Exit Sub
Else
Target_Date = .Range("N" & EndRw).Value
End If
TopRw = EndRw
Do While .Range("N" & TopRw).Value = .Range("N" & TopRw).Offset(-1).Value
TopRw = TopRw - 1
If TopRw = 1 Then Exit Do
Loop
N = EndRw - TopRw + 1
.PageSetup.PrintArea = Range(Left_Col & TopRw & ":" & Right_Col & EndRw).Address
If Prev_Mode = 1 Then
.PrintOut preview:=True
Else
.PrintOut preview:=False
MsgBox Target_Date & " 入力分を " & N & " 件 印刷しました。", , "印刷完了"
End If
.PageSetup.PrintArea = False
End With
End Sub
No.1
- 回答日時:
このデータ構成では、「今日入力した分」だと認識できるものが、何も無いから
今日入力した行を選択状態にするなどして、マクロを実行しなければなりません。
それを無くし、効率的に、印刷するためには、[受付日]の項目を設けたら如何でしょうか。
そうすれば、印刷対象日を指定して印刷することが、出来るようになります。
その辺の識別の方法が、はっきりすれば、サンプルコードを提示できるかも知れません。
この回答への補足
ja7awuさんアドバイスありがとうございます。
シート1の項目欄最後(N列)に処理日(データの入力日と考えていただければ)を入力項目があります。
サンプルコードの提示よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) セルによって印刷するシートを変える方法 EXCEL-VBA 2 2022/08/01 20:48
- Excel(エクセル) エクセルの印刷マクロについて質問があります。 現在、下記のマクロで印刷しています。Sheet1のD6 5 2023/06/12 10:59
- Excel(エクセル) エクセルでキーリストからデータを取り出して1枚1枚印刷するには? 11 2022/06/27 09:52
- Excel(エクセル) 【Excel】複数シートがあるエクセルデータで片面印刷と両面印刷設定がシートごとに入 1 2023/03/10 15:25
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- Excel(エクセル) エクセルのマクロで複数シートを両面印刷するには? 2 2022/12/08 23:23
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- その他(音楽・ダンス・舞台芸能) チケットに座席番号のみを印刷する方法 4 2023/02/10 11:21
- Excel(エクセル) 請求書と領収書の作成 4 2022/11/10 16:13
- 年賀状作成・はがき作成 Wordによる宛名印刷 2 2023/01/04 15:36
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでの作業計算方法について
-
Microsoft1Officeの互換ソフト...
-
【マクロ】その時、その時で変...
-
はがきについて。
-
【マクロ】読取専用のファイル...
-
エクセル初心者です 関数の入れ...
-
【関数】適切な文字数の数字を...
-
LOOKUP関数を使えばいいのでし...
-
【関数】先頭だけにある、半角...
-
Excel ピボットテーブルで日付...
-
Excelのpivotについて質問です
-
時間によってファイル名が変わ...
-
エクセル 白黒印刷で白線を印刷...
-
Aというブックの1というシート...
-
エクセル関数を教えてください
-
WPS OFFICEでの縦書きについて
-
Excelのチェックボックスの使い...
-
エクセルの条件付き書式につい...
-
エクセルのセルに同じ大きさの...
-
エクセルの関数について教えて...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報