• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCEL VBAでHPageBreaks)

EXCEL VBAでHPageBreaks

このQ&Aのポイント
  • EXCEL VBAでHPageBreaksを使用して自動でフッダーの上に罫線を引く方法について教えてください。
  • マクロを動かすと、1ページだけの時はちゃんとフッダーの上に罫線が引けますが、2ページ目になると「インデックスが有効範囲にありません」というエラーが出ます。
  • どこがいけないのでしょうか?修正方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • taocat
  • ベストアンサー率61% (191/310)
回答No.2

再度こんにちは。 姑息なコードを再アップしながらも納得いかず、 マイクロソフト技術情報を調べてみたところバグみたいですねぇ。 回避策として 追加した範囲の最後のセル(右下)を選択し、 Count,Location等を使用した後、最初のセルを選択 と書いてありましたので下記のようにしたらOKでした。 マイクロソフト、しっかりせんかいっ!(^^;;; ●のコードを追加。 ----------------------------------------------- Range(Cells(LastRow + 1, "A"), Cells(LastRow + 100, "A")) = "ABC" ●Range("A1").SpecialCells(xlCellTypeLastCell).Select BreakSu2 = ActiveSheet.HPageBreaks.Count For B = 1 To BreakSu + 1 Rw = ActiveSheet.HPageBreaks(B).Location.Row - 1 With Range(Cells(Rw, "A"), Cells(Rw, "D")).Borders(xlEdgeBottom) .LineStyle = xlContinuous End With Next B  ● Range("A1").Select Range(Cells(LastRow + 1, "A"), Cells(LastRow + 100, "A")).ClearContents ' = ClearContents ActiveSheet.PrintPreview Next End Sub --------------------------------------------- 下記マイクロソフトサイトも覗くこと! 以上です。

参考URL:
http://support.microsoft.com/default.aspx?scid=kb;ja;210663
merlionXX
質問者

お礼

何度もありがとうございます!!!! マイクロソフトのサイト見ました。 バグだったんですかあ・・・・。 でも、この回避方法だと、Application.ScreenUpdating = False を使ってはいけないと書いてました。 質問に書いたコードはテスト用ですが本番は画面が動かないようにApplication.ScreenUpdating = Falseを入れるつもりだったんです。 でNo1で教えていただいた ActiveWindow.View = xlPageBreakPreview '改ページプレビュー ではそんな制限はないですよね?(実験しましたが大丈夫のようでした)

その他の回答 (1)

  • taocat
  • ベストアンサー率61% (191/310)
回答No.1

こんにちは。 では下記のように、●のコードを追加してみてください。 ------------------------------------------------- Range(Cells(LastRow + 1, "A"), Cells(LastRow + 100, "A")) = "ABC" ●ActiveWindow.View = xlPageBreakPreview '改ページプレビュー BreakSu2 = ActiveSheet.HPageBreaks.Count For B = 1 To BreakSu + 1 ' MsgBox B & "-" & BreakSu + 1 & "-" & BreakSu2 Rw = ActiveSheet.HPageBreaks(B).Location.Row - 1 With Range(Cells(Rw, "A"), Cells(Rw, "D")).Borders(xlEdgeBottom) .LineStyle = xlContinuous End With Next B ● ActiveWindow.View = xlNormalView  '改ページから標準へ Range(Cells(LastRow + 1, "A"), Cells(LastRow + 100, "A")) = ClearContents ActiveSheet.PrintPreview Next End Sub ------------------------------------------- 改ページプレビューを表示して強制的に改ページ位置を取得しています。 以上です。

merlionXX
質問者

お礼

taocatさまには本当にお世話になりました。 おかげさまで無事出来上がりました! 感謝感激です。 ありがとうございました。

関連するQ&A