2012-01-25 19 views
3

新しいExcelシートにさまざまな範囲をコピーし、ページレイアウトビューで次のページまたは特定のページを参照するソリューションを探しています。VBA Excel - ページレイアウトビューの次のページに移動

私はすでにページレイアウトを余白、ヘッダー、その他の書式で設定しており、画面に表示されたレイアウトに基づいてレポートを記入したいと考えています。レイアウトが設定されているので、セル参照をハードコードして範囲を配置することはできますが、これを動的に決定します。そこに任意のソリューション?

答えて

0

これは難しいことですが、既にレイアウトが設定されている場合は、テンプレートページと見なすことができます。あなたが「範囲外」になるかどうかを判断するために使用できるトリックがあります。新しい範囲をテンプレートシートにコピーする前に、コピーするコンテンツの高さを決定し、コピー先の「左上」の高さ(ページが壊れる部分)に対して保持します。範囲外になった場合は、次のページに移動してページ範囲を分割しないようにします。

範囲外の場合はどうしたら分かりますか?コードを開始すると、ページあたりの標準高さを知ることができます。次に貼り付けるように減らします。この方法は、コピー/貼り付け時に異なる行の高さを処理します。

コード内の範囲を選択するときは、Heightプロパティ(Range( "A1")。Height)をチェックするだけで、次の範囲のTopプロパティの配置場所を知ることができます。また、標準の高さをハードコードすることもできます(1ページに収まるセルを強調表示して、直接ウィンドウに移動し、Selection.Heightと入力すると標準の高さになります)。

希望すると便利です。

3

これを行う最も簡単な方法は、ページレイアウトビューに変更し、次に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)。

関連する問題