現在のページの印刷プレビューの表示(Microsoft Excel)
ミシェルは、彼女が取り組んでいる長いワークシートを持っています。彼女がワークシートに印刷プレビューを使用する場合、[印刷プレビュー]ダイアログに表示されるページは常に最初のページです。ミシェルは、印刷プレビューで自分が作業しているワークシートのページを自動的に表示する方法があるかどうか疑問に思います。
この問題に取り組む1つの方法は、印刷領域を操作することです。作業中のワークシートの領域を選択し、選択した印刷領域と同じに設定すると、印刷プレビューを表示すると、その印刷領域のみが表示されます。
これで目的が達成されない場合は、マクロを使用することに頼ることができると思うかもしれません。これがあなたのためにトリックをするかもしれないサンプルマクロです:
Sub PrintPreviewActivePage() Dim lActiveRow As Long Dim iActiveCol As Integer Dim iHPBs As Integer Dim iVPBs As Integer Dim lRow As Integer Dim iCol As Integer Dim iPage As Integer lActiveRow = ActiveCell.Row iActiveCol = ActiveCell.Column ActiveSheet.UsedRange If IsEmpty(ActiveCell.SpecialCells(xlCellTypeLastCell)) Then _ ActiveCell.SpecialCells(xlCellTypeLastCell).FormulaR1C1 = " " If lActiveRow > ActiveCell.SpecialCells(xlCellTypeLastCell).Row Or _ iActiveCol > ActiveCell.SpecialCells(xlCellTypeLastCell).Column Then _ Exit Sub With ActiveSheet iHPBs = .HPageBreaks.Count iVPBs = .VPageBreaks.Count lRow = 0 iCol = 0 If iHPBs > 0 Or iVPBs > 0 Then For lRow = iHPBs To 1 Step -1 If .HPageBreaks(lRow).Location.Row <= lActiveRow Then Exit For Next lRow For iCol = iVPBs To 1 Step -1 If .VPageBreaks(iCol).Location.Column <= iActiveCol Then Exit For Next iCol End If iPage = (lRow + 1) + (iCol * (iHPBs + 1)) .PrintOut From:=iPage, To:=iPage, Preview:=True MsgBox "Previewed page " & iPage End With If ActiveCell.SpecialCells(xlCellTypeLastCell).FormulaR1C1 = " " Then _ Selection.SpecialCells(xlCellTypeLastCell).ClearContents End Sub
このマクロは、実際には、インターネット上でいくつかの調査で見つけることができる任意の数のマクロのバリエーションです。これには2つの重要な部分があります。最初にマクロがワークシートのどの「ページ」にいるかを判断し、次に.PrintOutメソッドを使用してPreviewパラメーターをTrueに設定すると、PrintPreviewが呼び出されます。
このマクロがうまく機能するワークシートがいくつかありますが、機能するかどうかはかなり気まぐれです。ほとんどのテストでは、非常に小さなワークシートを使用しない限り、それを機能させることができませんでした。 (つまり、行と列が非常に少ないです。)大きなワークシートで実行すると、.HPageBreaksコレクションのメンバーを調べるループで「SubscriptOutofRange」エラーが発生することがすぐにわかります。範囲外のメンバーを使用していない場合(lRowが.Countプロパティによって返される値の範囲外で変化することはありません)、これがどのように発生するかは困惑しています。
ただし、Microsoftが認めている問題のようです。実際、それは彼らが何年にもわたって認識しているが修正されていない問題です:
https://support.microsoft.com/en-us/help/210663/
ただし、Webページで提案されている解決策は実際には機能しません。そのため、1つのページしか操作していないため、ページ番号を計算する必要がないワークシートでのみ確実に機能するマクロに固執しています。ああ!
結論として、マクロベースのアプローチは、当面の間、ミシェルのニーズに対して実行可能ではない可能性があります。これで、このヒントの冒頭で説明した印刷領域のアプローチだけが残ります。
注:
このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(13578)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice365のExcelに適用されます。