プロが教える店舗&オフィスのセキュリティ対策術

いつもお世話になります

Excelシートのテキスト化で非表示の行を削除する際、その中に改ページが有るかをチェックして
有る場合の処理を行っていて
下記のように改行マークを位置を求め処理しています
'...>改ページ位置を求める
kpbCount = 0
If ActiveSheet.HPageBreaks.Count > 0 Then
ReDim KaiPageRow(ActiveSheet.HPageBreaks.Count)
For Each Kpb In ActiveSheet.HPageBreaks
kpbCount = kpbCount + 1
KaiPageRow(kpbCount) = Kpb.Location.Row
Next Kpb
End If
'...<

しかし、改行マークがなく不必要な罫線が入っていると(画像添付)
For Each Kpb In ActiveSheet.HPageBreaks で「インデックスが範囲外」のエラーになります
ActiveSheet.HPageBreaks.Countも”0"でなく16という数字が入ってきました

ユーザには罫線を消すように言ってエラーを逃れていますが、何かエラーを回避できる方法が有るのでしょうか?
分かりましたら教えてください

「vba 改ページカウントで不可解なエラー」の質問画像

A 回答 (1件)

こんにちは。



確認事項です。

>改行マークがなく不必要な罫線が入っていると
>ActiveSheet.HPageBreaks.Countも”0"でなく16という数字が入ってきました

こういう現象というのは、マクロの最初に、
ActiveSheet.PageSetup.PrintArea = [ユーザー任意の印刷範囲] に設定していない場合で、デフォルト状態のままで、誤動作すると思うのです。

それと同時に、行や列を表示・非表示した後では、印刷範囲を、その都度、再設定し直さないといけないはずです。その後で、自動改ページ(たぶん)の数を取らなければ、数値が狂ってしまいます。

罫線については、不必要な罫線自体を印刷範囲に入れてしまえば、その範囲内の印刷するものとしてカウントしてしまうはずです。印刷範囲を正しく設定することと、余計な罫線を消してしまうマクロを入れれば、誤動作は免れるのではないかと思います。
    • good
    • 0
この回答へのお礼

こんにちは
いつもお世話様です

やっぱりデフォルト状態はだめですか
本来、不必要なページなんですがUser(社内)がそのままにしていて!
頂いた内容について、了解しました
何らかの処理をするようにします
本当にいつもありがとうございます

お礼日時:2018/10/16 09:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています