新しいExcelシートにさまざまな範囲をコピーし、ページレイアウトビューで次のページまたは特定のページを参照するソリューションを探しています。VBA Excel - ページレイアウトビューの次のページに移動
私はすでにページレイアウトを余白、ヘッダー、その他の書式で設定しており、画面に表示されたレイアウトに基づいてレポートを記入したいと考えています。レイアウトが設定されているので、セル参照をハードコードして範囲を配置することはできますが、これを動的に決定します。そこに任意のソリューション?
新しいExcelシートにさまざまな範囲をコピーし、ページレイアウトビューで次のページまたは特定のページを参照するソリューションを探しています。VBA Excel - ページレイアウトビューの次のページに移動
私はすでにページレイアウトを余白、ヘッダー、その他の書式で設定しており、画面に表示されたレイアウトに基づいてレポートを記入したいと考えています。レイアウトが設定されているので、セル参照をハードコードして範囲を配置することはできますが、これを動的に決定します。そこに任意のソリューション?
これは難しいことですが、既にレイアウトが設定されている場合は、テンプレートページと見なすことができます。あなたが「範囲外」になるかどうかを判断するために使用できるトリックがあります。新しい範囲をテンプレートシートにコピーする前に、コピーするコンテンツの高さを決定し、コピー先の「左上」の高さ(ページが壊れる部分)に対して保持します。範囲外になった場合は、次のページに移動してページ範囲を分割しないようにします。
範囲外の場合はどうしたら分かりますか?コードを開始すると、ページあたりの標準高さを知ることができます。次に貼り付けるように減らします。この方法は、コピー/貼り付け時に異なる行の高さを処理します。
コード内の範囲を選択するときは、Heightプロパティ(Range( "A1")。Height)をチェックするだけで、次の範囲のTopプロパティの配置場所を知ることができます。また、標準の高さをハードコードすることもできます(1ページに収まるセルを強調表示して、直接ウィンドウに移動し、Selection.Heightと入力すると標準の高さになります)。
希望すると便利です。
これを行う最も簡単な方法は、ページレイアウトビューに変更し、次にLargeScroll
を使用して、これまでのページに移動することです。
ActiveWindow.View = xlPageLayoutView '<--- Changes view to "Page Layout"
ActiveWindow.LargeScroll 1 '<--- Scrolls down a full page 1 time
「1」は上記の例で実行したいLargeScrollの数です。どこからでも1ページ下がります。これは、ページレイアウトビューのどのページでも機能します。
2ページに移動したいが、コードでどのページが残っているのかわからない場合の例です。それはあなたが任意の数の「1」に変更することができますページ1
Cells(1,1).Activate '<--- Takes you to first cell in your worksheet
ActiveWindow.View = xlPageLayoutView
ActiveWindow.LargeScroll 1
なり、ワークシートの最初のセルにあなたを取るためにcells(1,1)
を使用しています。覚えておいてください、それはオフセットのように働くので、A1セルから3ページに行きたい場合、3ではなく2回だけスクロールします。コードはActiveWindow.LargeScroll 2
のようになります。現在のページ(2 + 1)。