• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCEL のVBAでの質問です!)

EXCELのVBAでセルの値によって印刷範囲を指定する方法

このQ&Aのポイント
  • 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を活用することで、自動化された印刷処理が可能となり、作業の効率化が図れます。ぜひ、上記の手順を試してみてください。

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

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.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以上 の、時は印刷を行いません。

ljhaosf
質問者

お礼

回答有り難うございます、無事出来ましたっ

その他の回答 (1)

  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.1

ごく簡単に説明すると、 「Ifで分岐」 「Caseで分岐」 どちらかでやるのが簡単だと思いますよ。 Ifを例に取ると If 条件1 Then ~処理~ ElseIf 条件2 Then ~処理~ End If など。 条件が増えるなら、ElseIfを増やしましょう。 ところで、 > sheet2のF9が1以上6未満なら > sheet2のF9が7以上12未満なら > sheet2のF9が13以上18未満なら 「未満」と「以下」の使い分けは大丈夫ですか?

ljhaosf
質問者

お礼

回答有り難うございます、無事出来ましたっ

関連するQ&A