| 
    
     |  | 印刷ページ数を取得するため、以下のマクロを作成しました。 
 
 Excel2000で特定のファイルに対し実行したところ、For Each 文のHpageBreak Objectを取得する過程でエラーが発生しました。
 debugしたところ、HpageBreaks.count = 3 でしたが、HpageBreaks(3)が存在しませんでした。どうしてでしょうか?
 
 ちなみにExcel2002では正常に取得でき、HpageBreaks.count = 2が表示されました。
 
 どなたかわかる方、教えてください。
 
 Public Function F_CountPages(ByVal wshWork_Sheet1 As Worksheet) As Long
 Dim lngV_PageNo As Long     '印刷範囲内の垂直改ページ数
 Dim lngH_PageNo As Long     '印刷範囲内の水平改ページ数
 Dim hpb As HPageBreak      '垂直改ページ(object)
 Dim vpb As VPageBreak      '水平改ページ(object)
 Dim strPrint_Area As String   '印刷範囲のアドレス
 
 With wshWork_Sheet1
 '「改ページ」プレビュー
 ActiveWindow.View = xlPageBreakPreview
 '印刷範囲アドレス取得
 strPrint_Area = .PageSetup.PrintArea
 If strPrint_Area = "" Then
 strPrint_Area = "A1:IV65536"
 End If
 '印刷領域の垂直改ページをカウント
 For Each vpb In .VPageBreaks
 If Not Application.Intersect(vpb.Location, .Range(strPrint_Area)) _
 Is Nothing Then
 lngV_PageNo = lngV_PageNo + 1
 End If
 Next vpb
 '印刷領域の水平改ページをカウント
 For Each hpb In .HPageBreaks
 If Not Application.Intersect(hpb.Location, .Range(strPrint_Area)) _
 Is Nothing Then
 lngH_PageNo = lngH_PageNo + 1
 End If
 Next hpb
 With .PageSetup
 '拡大縮小印刷の場合
 If CBool(.Zoom) = True Then
 lngV_PageNo = lngV_PageNo + 1
 lngH_PageNo = lngH_PageNo + 1
 '枚数指定印刷の場合
 Else
 lngV_PageNo = IIf(Not .FitToPagesWide = False, _
 .FitToPagesWide, lngV_PageNo + 1)
 lngH_PageNo = IIf(Not .FitToPagesTall = False, _
 .FitToPagesTall, lngH_PageNo + 1)
 End If
 End With
 '印刷枚数取得
 F_CountPages = lngV_PageNo * lngH_PageNo
 '「標準」ビュー
 ActiveWindow.View = xlNormalView
 End With
 End Function
 
 |  |