[[20200518133800]] 『チェックボックスでレ点がある場合のみ印刷』(モッコウバラ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『チェックボックスでレ点がある場合のみ印刷』(モッコウバラ)

シート1にコントロールボックスと、シート2からシート10までのリストを作成し、それぞれにチェックボックスを配置します。コントロールボックスにより、チェックボックスにレ点を入れたもののみ印刷をするとしたときに、以下のマクロでは例えばシート2、シート3、シート4、シート5にチェックを付けて印刷すると、シート4以下が印刷しません(シート2シ−ト3だけしか印刷しない)。解決方法はありますでしょうか。

Sub 印刷()

    Dim n
    n = 2
    Do
        If Range("D" & n).Value Then _
        Worksheets(Range("B" & n).Value).PrintPreview
        n = n + 1
    Loop Until Range("D" & n).Value = ""
End Sub

< 使用 Excel:Excel2007、使用 OS:Windows10 >


 少なくともこのマクロ自体は動くと思います。

 >例えばシート2、シート3、シート4、シート5にチェックを付けて印刷すると

 このとき(印刷前)、B2:B5、D2:D5はどのようになっていますか?
(tora) 2020/05/18(月) 14:49

Loop Until Range("D" & n).Value = ""
→Loop while n<=10
(mm) 2020/05/18(月) 15:12

 A   B    C  D 
1
2  まつ  レ TRUE
3  たけ  レ  TRUE
4  うめ レ  TRUE
5  ばら レ  TRUE
6  きく
  ・
  ・
  ・

シート2=まつ
シート3=たけ
シート4=うめ
シート5=ばら
シート6=きく

イメージとしてはこんな感じです。
上記コードとしたとき、まつ、たけは印刷しますが、うめ、ばらを印刷せず、画面がまつに切り替わり終了してしまいます。

(モッコウバラ) 2020/05/18(月) 15:14


 示されたコードで、こちらの環境ではとりあえずシート5までプレビューできます。

 マクロの編集画面でそのマクロを選択し、F8キーを何回か押してステップインで実行してみてください。
 「たけ」のプレビューを消した後、 Loop Until Range("D" & n).Value = "" が黄色くなったところで
 イミディエイト・ウインドウの中に ?Range("D" & n).Value と入れてEnterを押す。

 そこで、「TRUE」と表示されれば、そのままステップインすればDoに戻るはずですけど・・

 もしマクロの編集画面にイミディエイト・ウインドウがない場合は、、
 ツールバーの表示から、イミディエイト・ウインドウを表示させてください。

(tora) 2020/05/18(月) 16:29


何度も恐縮です。
確かにステップインでは実行できました。また、ユーザーフォームの実行でも動作しましたが、コントロールボックスで実行すると上記のような現象になってしまいます。別の原因なのでしょうか。初歩的な質問ばかりで申し訳ありません。
(モッコウバラ) 2020/05/18(月) 17:10

 >コントロールボックスで実行する

 この意味が分かりません?

(tora) 2020/05/18(月) 17:21


すいません。コマンドボタンです。コマンドボタンにマクロを割り当てて実行した時、シート2、シート3は印刷しますが、シート4、5は印刷できません。
(モッコウバラ) 2020/05/18(月) 20:23

 コマンドボタンに割り当てたからと言って別の結果になるということは寡聞にして知りません。

 もしかして、コマンドボタンには別のマクロ(例えば練習用に作ったものとか)を割り当てていて、
 そちらのマクロは2回だけ実行するようになっているとか、そんなことはないですよね。

 マクロの編集画面でどこかでブレイクポイントを設定し、
 (コードを記述している左のグレーのところをクリックすると、茶色い●がでて、コードの行も茶色になる)
 元の画面からボタンを押してみてください。

 茶色い●のところで止まるはずですから、そこからステップインで実行しても同じ結果でしょうか?

 なお、ブレークポイントはもう一度クリックすると消えますので不要になったら消してくださいね。

(tora) 2020/05/18(月) 22:03


DOのあとに
Worksheets("Sheet1").Activate
を記載したら作動しました。

当方、先週から在宅勤務において、この際現在行っている仕事をマクロで処理できないかと、VBAを見よう見まねで始めた初心者です。
今後ともお聞きすることが多いかと思いますが、ご教示よろしくお願いいたします。
(モッコウバラ) 2020/05/18(月) 22:26


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.