• ベストアンサー

【Excel VBA】条件付き改ページ設定

Excel2003を使用しています。 一定行(47行)ごとに改ページを設定するマクロは過去質問を参考にコードを書くことができましたが、“非表示の行を除いた”47行ごとに改ページを設定するマクロにするには、どのようにすればいいでしょうか? 過去質問も検索してみましたが、検索の仕方がよくないのか、うまく見つけられず…。 よろしくお願いします。

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

  • ベストアンサー
  • kybo
  • ベストアンサー率53% (349/647)
回答No.1

例えばA列のデータ量で表の範囲を判断する場合、以下の様に1行ずつチェックする感じになるかと思います。 Sub macro() Dim R As Range, C As Range, I As Long Set R = Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row).SpecialCells(xlCellTypeVisible) For Each C In R I = I + 1 If I Mod 47 = 1 And I > 1 Then C.PageBreak = xlPageBreakManual End If Next C End Sub

KOH3193
質問者

お礼

回答ありがとうございます。 なるほど~1行ずつチェックするんですね! 記載していただいたコードにちょっと手を加えると、希望するものになりそうです。 ありがとうございました。

関連するQ&A

  • 【Excel VBA】コードの整理

    Excel2003を使用しています。 仕事で使用しているコードが増えてきたので、コードばかりを集めたファイルのようなものを作って、整理したいと思うのですが、何か良い方法やおすすめの方法はあるでしょうか? マクロ勉強中で、以前書いたコードを参考にすることも多いので、検索もしやすいようにできればと思っています。 アドバイスよろしくお願いします。

  • 【Excel VBA】条件を満たすデータを順に抽出

    Excel2003を使用しています。 CSVでExcelに取り込んだデータの中から、条件を満たすものを順に抽出して一覧表を作成するマクロを作りたいのですが。。。 ・Sheet2のB列に“コード”と入力されている行のC列のデータ → Sheet1のC列2行目以下 ・Sheet2のC列に“合計”と入力されている行のD列のデータ → Sheet1のD列2行目以下 に順に表示させたいのですが、うまくいきません。 以前、いただいた回答で参考になりそうなものを見てみたのですが、手順というか何かヒントのようなものをいただけたら、自分でどうにかできそうなので、質問させていただきました。 よろしくお願いします。

  • Excel2007のVBAについて

    Excel2007のVBAについて Excel2007以前では「マクロの記録」を実行して罫線や図形の描写を行って、「記録終了」を行うと作業していたコードが記述され、それを加工したりして使っていましたが、Excel2007で同じように行ってもコードが記述されてませんでした。 セルの操作等はコードが記述されていました。 どこか、私の操作方法が間違っているのでしょうか。また2003のようにコードを記述させる方法が別途あるのでしょうか、よろしくお願いします。 関係ないとおもいますが、 「Excelのオプション」で「開発タブをリボンに表示する」はチェック入れてあります。 「マクロの設定」では「すべてのマクロを有効にする」にチェックしています。

  • 【Excel VBA】図の印刷有無の設定

    Excel2003を使用しています。 あるシートに数10ページ分の同じ書式があり、それぞれ同じ位置に『図 68』が貼り付けてあります。 これを2部印刷するのですが、1部は『図 68』を印刷せず、もう1部は『図 68』も印刷します。 この『図 68』の印刷の有無の設定をマクロで処理したく、マクロの記録を元に下記のようにコードを書いて試してみたところ、1ページ目の『図 68』にしか印刷の設定ができていませんでした。 『図 68』は、2ページ目以降は1ページ目の図をコピペしたもので、名前は全部同じように表示されていますが、実際のところ(?)それぞれ名前が違うのでしょうか? 図の設定に関するマクロは初めてのこともあり、よくわかりません。どのようにしたら、うまく設定できるでしょうか? よろしくお願いします。 ---------------------------------------- Sub Macro1()  ActiveSheet.Shapes("図 68").Select   With Selection    .Placement = xlMove    .PrintObject = False   End With End Sub ----------------------------------------

  • 【Excel】条件付書式について

    Excel2003を使用しています。 ある特定の値(文字列)が入力されたら、同行のある範囲のフォントを白にしたいのですが、条件付書式でできるのでしょうか? (条件付書式はあまり使用したことがなく、条件の設定の仕方がイマイチわかりません。。。) 例えば、O1に○と入力されたら、B1:N1のフォントの色を白にしたいです。B1:N1のデータは他で使用しますが、プリントアウトする際(見た目)には表示させたくないので… 条件付書式では不可能ならば、関数やマクロでも構いません。 マクロについては初心者ですので、参考までにコードを書いていただけると大変助かります。 よろしくお願いします。

  • 【Excel VBA】1クリックで1ページ移動する

    Excel2003を使用しています。 Sheet1はデータ入力用のシートとなっていて、Sheet1にデータを入力すると、Sheet2の予め作成されている書式にデータが入力されて、書類が完成するようになっています。 実際、プリントアウトするのはSheet2になるのですが、Sheet1にデータを入力して、Sheet2への入力状態を確認したいときに、ボタンをクリックすることで、1ページずつ移動させるようにしたいのですが、マクロで可能でしょうか?可能であれば、どのようにコードを記述すればいいでしょうか? イメージしているものは、例えば、『上へ』と『下へ』という2つのボタンを作って、そのボタンのクリックで移動できたらと思っています。 Sheet2の1ページは26行で、1ページ目はA1:M26、2ページ目はA27:M52、3ページ目はA53:M78…となっていて、100ページまであって、行数は2000行を超えますし、今後、ページ数が増えることも考えられますので、1クリックで1ページ分移動できると確認しやすく便利だなと思い、質問させていただきました。 よろしくお願いします。

  • 【Excel VBA】列幅の設定

    こんばんは。 Excel2003を使用しています。 あるシステムからのデータをCSVで出力、Excelで表示させると、セルの幅が合っていないので、見づらいのですが、これを解消するためにそれぞれの列幅を決めて、マクロで設定したいと思っています。 連続しない列の列幅の設定のコードの書き方がわからないので、教えていただけないでしょうか?ひとつの列や連続した列幅の設定であれば、手元にある参考書でわかるのですが。。。 例えば A列、C列、D列、G列、I列、J列の列幅を14 B列、F列、H列の列幅を10 に設定するコードはどのように書いたらいいのでしょうか? マクロ勉強中です。よろしくお願いします。

  • 【Excel VBA】プリンタのプロパティダイアログの表示

    Excel2003を使用しています。 あるシートのページ設定等をマクロの記録をとって、コードを書きました。 ページ設定が済んだら、プリンタのプロパティダイアログを表示させたいのですが、ここまでをマクロで処理することは可能でしょうか? このシートを印刷するときは、A3用紙(横)1枚にA4(縦)で作成されているデータを2ページ印刷(2ページを1ページに集約印刷)したいので、ページ設定が済んだら、プリンタのオプション設定を忘れないよう、プリンタのプロパティダイアログが自動で表示されるようにできないかと思い、質問させていただきました。 私個人が印刷する際は、ここまで必要ないのですが、会社の年配の方が上記の設定で印刷するのに、わからない(覚えきれない)というので、何か良い方法はないかと考えているところでして…(^_^;) この点に関しても、アドバイスをいただけると嬉しいです。 よろしくお願いします。

  • Excel2003 ページ設定の「行のタイトル」について

    Excel2003 ページ設定の「行のタイトル」について Excel2003を使用しており、シートが100近くあるブックがあります。 それぞれのシートはほとんど同じフォーマットで作られています。 シートに「行のタイトル」設定をしたいのですが、 シート全て、同じ行がタイトルとなるので、一括で設定したいのですが、 すべてのシートを選択して、ページ設定 → シートタブを見ると、 行のタイトルが設定できなくなっているので、一括での処理は出来ないのでしょうか? ご教示頂きたく何卒宜しくお願い致します。

  • 【Excel VBA】結合セルのデータ削除

    Excel2003を使用しています。 1~1300行までのデータの中の、ある一定の範囲と間隔でデータを削除するためのコードを書きたいのですが、セルが結合されているため、うまく処理できません。 一定の範囲と間隔とは、 B7:O26、B33:O52、B59:O78、B85:O104…B1281:O1300 です。 このひとつの範囲が1ページ分のデータで、全50ページあり、範囲内のセルは全て2行1列で結合されています。 上記のような場合は、どのようにコードを書いたらいいでしょうか? よろしくお願いします。

専門家に質問してみよう