- ベストアンサー
EXCELのVBAでセルの値によって印刷範囲を指定する方法
- EXCEL2010を使用している場合、セルの値に応じて印刷範囲を指定する方法について質問です。具体的には、sheet2のF9の値によって、異なる印刷範囲を設定したいと考えています。例えば、F9が1以上6未満の場合はsheet2のA1:M20とsheet1のA1:N50を印刷し、F9が7以上12未満の場合はsheet2のA1:M40とsheet1のA1:N50を印刷する方法が知りたいです。さらに、F9が13以上18未満の場合はsheet2のA1:M60とsheet1のA1:N50を印刷し、それぞれの範囲を別々のページとして印刷する方法も知りたいです。
- この問題を解決するためには、VBAを使用する必要があります。VBAを使ってセルの値を取得し、条件に基づいて印刷範囲を設定することができます。具体的な手順は以下の通りです。まず、VBAエディタを開き、対象のシートのモジュールを選択します。次に、Worksheet_Changeイベントを選択し、セルの値が変更された場合に実行されるコードを入力します。コード内で目的のセルの値を取得し、条件分岐を行って印刷範囲を設定します。最後に、PrintOutメソッドを使用して印刷を行います。これにより、セルの値に応じて異なる範囲の印刷を実現することができます。
- 以上の手順に従えば、EXCELのVBAを使用してセルの値によって印刷範囲を指定することができます。質問者さんの場合、sheet2のF9の値によって異なる範囲を印刷したいという要件がありました。VBAを使ってセルの値を取得し、条件分岐を行って印刷範囲を設定すれば、要件に応じた印刷が実現できます。また、VBAを活用することで、自動化された印刷処理が可能となり、作業の効率化が図れます。ぜひ、上記の手順を試してみてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
あらかじめ以下の設定をしておきます。 ・Sheet1のA1:N50を印刷範囲に設定し、1ページに収まるようにしておく。 ・Sheet2のA1:M60を印刷範囲に設定。1枚目がA1:M20、2枚目がA21:M40、3枚目がA41:M60になるように設定 ・ブック全体を印刷すると、Sheet1、Sheet2の順に全部で4ページが印刷されるように設定 で、以下のマクロを実行します。 Sub Sample() nPage = 0 nF9 = Sheets(2).Range("F9") If (nF9 >= 1) And (nF9 < 6) Then nPage = 2 ElseIf (nF9 >= 7) And (nF9 < 12) Then nPage = 3 ElseIf (nF9 >= 13) And (nF9 < 18) Then nPage = 4 End If If nPage = 0 Then MsgBox ("印刷しません") Exit Sub End If ActiveWorkbook.PrintOut From:=1, To:=nPage End Sub F9の値が1未満、6以上7未満、12以上13未満、18以上 の、時は印刷を行いません。
その他の回答 (1)
- tsubuyuki
- ベストアンサー率45% (699/1545)
ごく簡単に説明すると、 「Ifで分岐」 「Caseで分岐」 どちらかでやるのが簡単だと思いますよ。 Ifを例に取ると If 条件1 Then ~処理~ ElseIf 条件2 Then ~処理~ End If など。 条件が増えるなら、ElseIfを増やしましょう。 ところで、 > sheet2のF9が1以上6未満なら > sheet2のF9が7以上12未満なら > sheet2のF9が13以上18未満なら 「未満」と「以下」の使い分けは大丈夫ですか?
お礼
回答有り難うございます、無事出来ましたっ
お礼
回答有り難うございます、無事出来ましたっ