• ベストアンサー

Excel チェックボックスにより選択され印刷

よろしくお願いします。 A□ (F10のセルにtrue) B□ (F11のセルにtrue) C□ (F12のセルにtrue) Aならページ60 Bならページ70 Cならページ80 チェックボックスを3つ用意して、チェックがされている個所(ページ)のみ印刷をしたいです。 チェックボックスオンでtrueを返すまでは設定できたのですが、例えば、Aがオン(F10にtrueが表示)ならページ60を印刷と言うのがなぜか出来なくて困っています。 ご教授下さい。

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

  • ベストアンサー
  • SI299792
  • ベストアンサー率47% (774/1618)
回答No.3

という事は全部にチェックしてあったら、 60ページ、70ページ、80ページ 飛び飛びに印刷するのですか。 Option Explicit ' Sub Macro1()   Dim ROut As Integer   Dim Page As Integer '   For ROut = 10 To 12 '     If Cells(ROut, "F") Then       Page = ROut * 10 - 40       ActiveSheet.PrintOut From:=Page, To:=Page     End If   Next ROut End Sub

timmytimmy
質問者

お礼

なかなか自分でExcelを触れる時が無くて試せてませんが、ひとまずお礼まで。 ありがとうございました

その他の回答 (3)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.4

参考に Sub Test() If Range("F10").Value Then ActiveSheet.PrintOut From:=60, To:=60 If Range("F11").Value Then ActiveSheet.PrintOut From:=70, To:=70 If Range("F12").Value Then ActiveSheet.PrintOut From:=80, To:=80 End Sub

timmytimmy
質問者

お礼

ありがとうございます!

  • SI299792
  • ベストアンサー率47% (774/1618)
回答No.2

「ページ60」が解りません。何でしょうか。 私が思い付くのは、 ①領域に「ページ60」等の名前が付いている。(名前の管理) ②どこかのセル「ページ60」が入っている ③印刷範囲が 100ページ位あり、その中の60ページ(1ページだけ)印刷。 取りあえず①と解釈して作りました。 Option Explicit ' Sub Macro1()   Dim ROut As Long '   For ROut = 10 To 12 '     If Cells(ROut, "F") Then       ActiveSheet.PageSetup.PrintArea = "ページ" & ROut * 10 - 40       ActiveSheet.PrintOut     End If   Next ROut End Sub

timmytimmy
質問者

お礼

ありがとうございます!

timmytimmy
質問者

補足

ご回答ありがとうございます。 説明不足で失礼しました。 ③印刷範囲が 100ページ位あり、その中の60ページ(Aの場合)(1ページだけ)印刷。 をしたいです。 チェックボックスオンされたやつのみ(AだけとかA B C全部とか)印刷されると良いのですが。 よろしくお願いします。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

質問の内容から、エクセル(VBA)の未経験者と推測する。 まだこういうことをやるのは、早すぎるのではないか。凝りすぎと思う。 他人に使ってもらうため、というなら、なおさら経験を積んでからやるべきと思う。 エクセル、VBA、使う立場の人間心理など。 ーー チェックボックスを設けるのは、場所的に (1)ユーザーフォームに (2)ワークシートに (3)その他に があるが、 この(1)が標準で、(2)は勉強が必要な面がある ーー VBAを使うことにならざるを得ないと思うのだが、イベントという考えを利用する必要がある。 今回は、チェックボックス(コントロールの一種)には、(エクセルには)マクロの登録と言う仕組みがあるので、それを使うことになろう。いわば、Clickイベント1つに制限版です。 ーー これらコントロールと、ワークシートのセル(番地で表される)は 根源的には関係ないもので、LinkedCellなどでエクセルが、わざわざ設けた仕組によればそうなるという仕組みに過ぎない。 だからエクセルシートのセルの値がTRUEならば、何々すると考えるよりも チェックボックスがクリックされたらとか、チェック状態なら、と捉える方がよいと思う。 ーー 標準モジュールに Sub test01() ActiveSheet.PrintOut From:=1, To:=1 End Sub Sub test02() ActiveSheet.PrintOut From:=2, To:=2 End Sub のようなコードを作って置く。ページ設定操作の一部の限定版です。 ページ番号的に、FromとToで指定する。単一1ページ限定なら、FromとToは同じ値にする。 これで印刷するページ該当のチェックボックスをマウスなどで、Onにすると、印刷が始まると思う。 1,2ページでテスト済み。 コントロールのデザインモードで、右クリックして出る、マクロの登録で,test01やTest02を指定(コントロールごとに)紐づけて)おく。 後は、これで印刷するページ該当のチェックボックスをOnにすると印刷が始まる。 印刷指定後、チェックボックすをOffにすることは略。

関連するQ&A