Steveは、VBAマクロで、印刷時にワークシートに含まれるページ数と、特定のセルが印刷されるページ番号を決定する方法を探しています。この作業は思ったほど簡単ではありませんが、実行することはできます。

これを処理する最善の方法は、時代遅れの(ただしまだ利用可能な)Excel 4関数を使用して、ワークシートに印刷された総ページ数を決定することです。次に、HPageBreaksコレクションとVPageBreaksコレクションを使用して、印刷されるページのマトリックスのどこにセルが含まれるかを把握できます。以下は、これらの項目を利用するマクロの例です。

Sub PageInfo()

Dim iPages As Integer     Dim iCol As Integer     Dim iCols As Integer     Dim lRows As Long     Dim lRow As Long     Dim x As Long     Dim y As Long     Dim iPage As Integer

iPages = ExecuteExcel4Macro("Get.Document(50)")



With ActiveSheet         y = ActiveCell.Column         iCols = .VPageBreaks.Count         x = 0         Do             x = x + 1         Loop Until x = iCols _           Or y < .VPageBreaks(x).Location.Column         iCol = x         If y >= .VPageBreaks(x).Location.Column Then             iCol = iCol + 1         End If

y = ActiveCell.Row         lRows = .HPageBreaks.Count         x = 0         Do             x = x + 1         Loop Until x = lRows _           Or y < .HPageBreaks(x).Location.Row         lRow = x         If y >= .HPageBreaks(x).Location.Row Then             lRow = lRow + 1         End If

If .PageSetup.Order = xlDownThenOver Then             iPage = (iCol - 1)  (lRows + 1) + lRow         Else             iPage = (lRow - 1)  (iCols + 1) + iCol         End If     End With     MsgBox "Cell " & ActiveCell.Address & _       " is on " & vbCrLf & "Page " & _       iPage & " of " & iPages & " pages"

End Sub

このマクロで覚えておくべきことの1つは、HPageBreaksコレクションとVPageBreaksコレクションは、改ページプレビュー([表示] | [改ページプレビュー])でワークシートを表示している場合にのみ正確であると見なされることです。したがって、セルを選択してマクロを実行する前に、そのモードになっていることを確認する必要があります。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

link:/ excelribbon-ExcelTipsMacros [ここをクリックして、新しいブラウザタブでその特別なページを開きます]

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(11581)は、Microsoft Excel 2007、2010、2013、および2016に適用されます。

Excelの古いメニューインターフェイスに関するこのヒントのバージョンは、 `link:/ excel-Page_Numbers_in_VBA [VBAのページ番号]`にあります。