VBA(Microsoft Excel)のページ番号
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トレーニングのソースです。
このヒント(3135)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。
link:/ excelribbon-Page_Numbers_in_VBA [VBAのページ番号]
。