Excel VBA 質問スレッド №1572 (未解決)
助けて
投稿者 : 助けて―!! 投稿日時 : 2023/09/19(Tue) 08:23:17 OS : 未指定 EXCEL : 未指定
一部を抜取りしています。
連続の印刷コードを作ったのですが、
P1~P2までは数値が入り、A4の用紙に2分割しP1とP2のデータが入るようになっています。
P1=1で、P2=2の時は、問題なくA4に両方印刷されますが、
P1=1で、P2=3の時は、分割している為、指定していない4まで含まれ印刷されてしまいます。
指定していない部分を非表示にすることは可能でしょうか?
どなたか助けてください。お願い致します。
Dim i As Long
With Application
.ScreenUpdating = False
With .ActiveSheet
For i = .Range("P1") To .Range("P2") Step 2
.Range("O1").Value = i
Range("A1: K51").PrintOut
Next
End With
.ScreenUpdating = True
End With
一部を抜取りしています。
連続の印刷コードを作ったのですが、
P1~P2までは数値が入り、A4の用紙に2分割しP1とP2のデータが入るようになっています。
P1=1で、P2=2の時は、問題なくA4に両方印刷されますが、
P1=1で、P2=3の時は、分割している為、指定していない4まで含まれ印刷されてしまいます。
指定していない部分を非表示にすることは可能でしょうか?
どなたか助けてください。お願い致します。
Dim i As Long
With Application
.ScreenUpdating = False
With .ActiveSheet
For i = .Range("P1") To .Range("P2") Step 2
.Range("O1").Value = i
Range("A1: K51").PrintOut
Next
End With
.ScreenUpdating = True
End With
スポンサーリンク
[返信 1] Re : 助けて
投稿者 : てらてら 投稿日時 : 2023/09/19(Tue) 09:00:55
こんにちは。
このコードからは何とも言えませんが、プリンター設定を「Microsoft Print to PDF」にして、
P1、P2に色々な数値を入れて挙動を観察してみてはいかがでしょう。
こんにちは。
このコードからは何とも言えませんが、プリンター設定を「Microsoft Print to PDF」にして、
P1、P2に色々な数値を入れて挙動を観察してみてはいかがでしょう。
[返信 2] Re : 助けて
投稿者 : さんこう 投稿日時 : 2023/09/19(Tue) 10:00:13
>P1=1で、P2=3の時は、分割している為、指定していない4まで含まれ印刷されてしまいます。
>指定していない部分を非表示にすることは可能でしょうか?
印刷ページ数が奇数のとき、最終ページを印刷する前に、下半分を非表示にすればいいでしょう。
・印刷ページ数は、簡単な算数で求められます。
・最終ページの印刷の判定は、変数「i」とP2の値を比較すれば判ります。
・非表示にするのは、これ↓が参考になれば。
<VBA 行 非表示>
https://www.google.com/search?q=VBA+%E8%A1%8C+%E9%9D%9E%E8%A1%A8%E7%A4%BA
>P1=1で、P2=3の時は、分割している為、指定していない4まで含まれ印刷されてしまいます。
>指定していない部分を非表示にすることは可能でしょうか?
印刷ページ数が奇数のとき、最終ページを印刷する前に、下半分を非表示にすればいいでしょう。
・印刷ページ数は、簡単な算数で求められます。
・最終ページの印刷の判定は、変数「i」とP2の値を比較すれば判ります。
・非表示にするのは、これ↓が参考になれば。
<VBA 行 非表示>
https://www.google.com/search?q=VBA+%E8%A1%8C+%E9%9D%9E%E8%A1%A8%E7%A4%BA
[返信 3] Re : 助けて
投稿者 : higeru 投稿日時 : 2023/09/19(Tue) 13:17:22
ちょっと何言ってるかわかんない状態で、さんこうさんのアドバイスが的を射ているのかも判断しかねます。
■[質問] 助けて―!!さん(2023-09-19 08:23:17)の記事
> P1~P2までは数値が入り、A4の用紙に2分割しP1とP2のデータが入るようになっています。
最初 P1, P2 の「P」は「ページ」のことかと思ったのですが、「Range("P1")」とあるからにはセル番地。だとすると次の「A4の用紙に2分割しP1とP2のデータが入る」がどういうこと/状態なのか、さっぱり理解/イメージできません。
> P1=1で、P2=2の時は、問題なくA4に両方印刷されますが、
> P1=1で、P2=3の時は、分割している為、指定していない4まで含まれ印刷されてしまいます。
ここも理解不能。繰り返し処理ではあっても印刷範囲はいつも「Range("A1:K51")」だし、Range("O1") はこの範囲に含まれていないし。
わかってないのが私だけなら無視してもらってよいですけど。
ちょっと何言ってるかわかんない状態で、さんこうさんのアドバイスが的を射ているのかも判断しかねます。
■[質問] 助けて―!!さん(2023-09-19 08:23:17)の記事
> P1~P2までは数値が入り、A4の用紙に2分割しP1とP2のデータが入るようになっています。
最初 P1, P2 の「P」は「ページ」のことかと思ったのですが、「Range("P1")」とあるからにはセル番地。だとすると次の「A4の用紙に2分割しP1とP2のデータが入る」がどういうこと/状態なのか、さっぱり理解/イメージできません。
> P1=1で、P2=2の時は、問題なくA4に両方印刷されますが、
> P1=1で、P2=3の時は、分割している為、指定していない4まで含まれ印刷されてしまいます。
ここも理解不能。繰り返し処理ではあっても印刷範囲はいつも「Range("A1:K51")」だし、Range("O1") はこの範囲に含まれていないし。
わかってないのが私だけなら無視してもらってよいですけど。
[返信 4] Re : 助けて
投稿者 : 助けて―!! 投稿日時 : 2023/09/19(Tue) 17:23:37
わかりにくくてすみません。
説明が難しくて、
シート2にA4の用紙を縦向きにして真ん中で2分割しています(印刷範囲A1:AK51)。
この範囲に印刷範囲A1:AK51を上下に2分割に設定しており、
下半分にシート1のセルBI5に打ち込まれた数字を、シート2のセルO1にしています。
上半分にシート1の1ページ目の2行目の情報を出るようにしています。
セルO1には開始番号が入っています。
セルO1とセルP1は同じ数字が入ります。
セルP1は開始番号、セルP2は終了番号が入ります(この時偶数ならばいいのですが)。
3行目の情報までを印刷したいときにセルP2に3とすると、上半分に4行目の情報が入ってしまいます。
4行目の情報が印刷されず、白紙で処理されるコードを教えていただきたく質問させていただきました。
Sheets("シート2").Range("O1").Value = _
Sheets("シート1").Range("BI5").Value
わかりにくくてすみません。
説明が難しくて、
シート2にA4の用紙を縦向きにして真ん中で2分割しています(印刷範囲A1:AK51)。
この範囲に印刷範囲A1:AK51を上下に2分割に設定しており、
下半分にシート1のセルBI5に打ち込まれた数字を、シート2のセルO1にしています。
上半分にシート1の1ページ目の2行目の情報を出るようにしています。
セルO1には開始番号が入っています。
セルO1とセルP1は同じ数字が入ります。
セルP1は開始番号、セルP2は終了番号が入ります(この時偶数ならばいいのですが)。
3行目の情報までを印刷したいときにセルP2に3とすると、上半分に4行目の情報が入ってしまいます。
4行目の情報が印刷されず、白紙で処理されるコードを教えていただきたく質問させていただきました。
Sheets("シート2").Range("O1").Value = _
Sheets("シート1").Range("BI5").Value
Dim i As Long With Application .ScreenUpdating = False With .ActiveSheet For i = .Range("P1") To .Range("P2") Step 2 .Range("O1").Value = i Range("A1: K51").PrintOut Next End With .ScreenUpdating = True End With End Sub
[返信 5] Re : 助けて
投稿者 : さんこう 投稿日時 : 2023/09/19(Tue) 18:53:56
>下半分にシート1のセルBI5に打ち込まれた数字を、シート2のセルO1にしています。
>上半分にシート1の1ページ目の2行目の情報を出るようにしています。
上下逆でしたか。
少し修正しますが、、基本的には最初の回答と同じです。
印刷情報数が奇数のとき、終了番号のページを印刷する前に、上半分を非表示にすればいいでしょう。
・印刷情報数は、簡単な算数で求められます。
・終了番号の印刷の判定は、変数「i」とP2の値を比較すれば判ります。
・非表示にするのは、これ↓が参考になれば。
<VBA 行 非表示>
https://www.google.com/search?q=VBA+%E8%A1%8C+%E9%9D%9E%E8%A1%A8%E7%A4%BA
>下半分にシート1のセルBI5に打ち込まれた数字を、シート2のセルO1にしています。
>上半分にシート1の1ページ目の2行目の情報を出るようにしています。
上下逆でしたか。
少し修正しますが、、基本的には最初の回答と同じです。
印刷情報数が奇数のとき、終了番号のページを印刷する前に、上半分を非表示にすればいいでしょう。
・印刷情報数は、簡単な算数で求められます。
・終了番号の印刷の判定は、変数「i」とP2の値を比較すれば判ります。
・非表示にするのは、これ↓が参考になれば。
<VBA 行 非表示>
https://www.google.com/search?q=VBA+%E8%A1%8C+%E9%9D%9E%E8%A1%A8%E7%A4%BA
[返信 6] Re : 助けて
投稿者 : higeru 投稿日時 : 2023/09/20(Wed) 09:16:06
> ちょっと何言ってるかわかんない状態で、さんこうさんのアドバイスが的を射ているのかも判断しかねます。
あいかわらずこの状態なんですが。^^;(くりかえしますが、さんこうさんのアドバイスで解決するようなら無視してください。)
登場人物(セル)はシート 1 の BI5、シート 2(アクティブシート)のA1:AK51 と O1、P1、P2
これらはコードにも顔を出しますし、
■[返信 4] 助けて―!!さん(2023-09-19 17:23:37)の記事
> 下半分にシート1のセルBI5に打ち込まれた数字を、シート2のセルO1にしています。
これはコードと対応しています。が、
> 上半分にシート1の1ページ目の2行目の情報を出るようにしています。
この「シート1の1ページ目の2行目」で突然混乱します。このあと 3 行目と 4 行目も登場しますが…。
コードは可能な限り(未完成だったり部分的に切り出したことでコンパイルエラーになるようなものでも)提示してくれた方がありがたいです。
その際一行目は「Sub」で始まるものにして書き込んでください。
> ちょっと何言ってるかわかんない状態で、さんこうさんのアドバイスが的を射ているのかも判断しかねます。
あいかわらずこの状態なんですが。^^;(くりかえしますが、さんこうさんのアドバイスで解決するようなら無視してください。)
登場人物(セル)はシート 1 の BI5、シート 2(アクティブシート)のA1:AK51 と O1、P1、P2
これらはコードにも顔を出しますし、
■[返信 4] 助けて―!!さん(2023-09-19 17:23:37)の記事
> 下半分にシート1のセルBI5に打ち込まれた数字を、シート2のセルO1にしています。
これはコードと対応しています。が、
> 上半分にシート1の1ページ目の2行目の情報を出るようにしています。
この「シート1の1ページ目の2行目」で突然混乱します。このあと 3 行目と 4 行目も登場しますが…。
コードは可能な限り(未完成だったり部分的に切り出したことでコンパイルエラーになるようなものでも)提示してくれた方がありがたいです。
その際一行目は「Sub」で始まるものにして書き込んでください。
[返信 7] Re : 助けて
投稿者 : 助けて―!! 投稿日時 : 2023/09/20(Wed) 12:07:52
さんこうさん
higeruさん
お付き合いありがとうございます。
コードは以下で全部です。
さんこうさん
higeruさん
お付き合いありがとうございます。
コードは以下で全部です。
Sub ボタン44287_Click() Sheets("シート2").Range("O1").Value = _ Sheets("シート1").Range("BI5").Value Dim i As Long With Application .ScreenUpdating = False With .ActiveSheet For i = .Range("P1") To .Range("P2") Step 2 .Range("O1").Value = i Range("A1: K51").PrintOut Next End With .ScreenUpdating = True End With End Sub
[返信 8] Re : 助けて
投稿者 : さんこう 投稿日時 : 2023/09/20(Wed) 14:01:54
>コードは以下で全部です。
少し修正しますが、、基本的にはこれまでの回答と同じです。
印刷情報数が奇数のとき、終了番号のページを印刷する前に、上半分を非表示にすればいいでしょう。
・終了番号の印刷の判定は、変数「i」とP2の値を比較すれば判ります。
・非表示にするのは、これ↓が参考になれば。
<VBA 行 非表示> 行を非表示にする場合
https://www.google.com/search?q=VBA+%E8%A1%8C+%E9%9D%9E%E8%A1%A8%E7%A4%BA
<VBA 図形 四角> 図形(白い四角形)を被せて見えなくする場合
https://www.google.com/search?q=VBA+%E5%9B%B3%E5%BD%A2+%E5%9B%9B%E8%A7%92
>コードは以下で全部です。
少し修正しますが、、基本的にはこれまでの回答と同じです。
印刷情報数が奇数のとき、終了番号のページを印刷する前に、上半分を非表示にすればいいでしょう。
・終了番号の印刷の判定は、変数「i」とP2の値を比較すれば判ります。
・非表示にするのは、これ↓が参考になれば。
<VBA 行 非表示> 行を非表示にする場合
https://www.google.com/search?q=VBA+%E8%A1%8C+%E9%9D%9E%E8%A1%A8%E7%A4%BA
<VBA 図形 四角> 図形(白い四角形)を被せて見えなくする場合
https://www.google.com/search?q=VBA+%E5%9B%B3%E5%BD%A2+%E5%9B%9B%E8%A7%92
当掲示板について
- Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
- 記事内ではHTMLのタグは使用できません。
- 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
- Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
- Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
( 処理日時 : 2023-10-02 01:30:56 )