Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


9418 / 13644 ツリー ←次へ | 前へ→

【27418】過去ログの検索 Ver3 #6241 moomoo 05/8/8(月) 19:36 質問[未読]
【27421】Re:過去ログの検索 Ver3 #6241 りん 05/8/8(月) 21:11 発言[未読]
【27477】Re:過去ログの検索 Ver3 #6241 moomoo 05/8/10(水) 9:58 お礼[未読]

【27418】過去ログの検索 Ver3 #6241
質問  moomoo  - 05/8/8(月) 19:36 -

引用なし
パスワード
   Ver3の#6241のツリーを読みたいのですが、何か方法はないでしょうか。
題名は「nページ目の最初の行の取得」です。
3年ほど前に私が立てたツリーですが、現在では検索してもエラーになってしまいます。

【27421】Re:過去ログの検索 Ver3 #6241
発言  りん E-MAIL  - 05/8/8(月) 21:11 -

引用なし
パスワード
   moomoo さん、こんばんわ。

>Ver3の#6241のツリーを読みたいのですが、何か方法はないでしょうか。
>題名は「nページ目の最初の行の取得」です。
>3年ほど前に私が立てたツリーですが、現在では検索してもエラーになってしまいます。

テキストで保存したログです。
データ未整理のためツリー関連らしき部分を探しました。

======================================================================

【6241】nページ目の最初の行の取得 
 moomoo - 01/12/7(金) 19:06 - 
-------------------------------------------------------------------------
  こんにちは。moomooと申します。ここの方には何度も質問に応えていただいて
感謝しております。

現在、nページ目の最初の行を取得するマクロを組んでいます。
A列にデータが300ほどで、約50行で1ページ、6ページまであります。

Sub ページ()
  Dim pp As Integer
  Dim n As Long
  
  pp = ActiveSheet.HPageBreaks.Count
  If pp =0 Then
   Exit Sub
  End If
  For p = 1 To pp
    n = p
    Cells(p, 3) = ActiveSheet.HPageBreaks(n).Location.Row
  Next p
End Sub

というマクロの場合、C1には51が返されますが、直後「インデックスが
有効範囲にありません」とのメッセージがでて止まってしまいます。

Range("C1")= ActiveSheet.HPageBreaks(1).Location.Row
Range("C2") = ActiveSheet.HPageBreaks(2).Location.Row

とした場合も、C1はうまく行きますが、エラーのためC2のところで
止まってしまいます。

ページの開始行を取得する方法として根本的に間違っているのか、
解決方法があるのか教えていただけないでしょうか
======================================================================

【6270】Re:nページ目の最初の行の取得 
 あきら  - 01/12/11(火) 22:18 - 
----------------------------------------------------------------------
  こんにちは。

▼moomooさん:
>ページの開始行を取得する方法として根本的に間違っているのか、
>解決方法があるのか教えていただけないでしょうか

なかなかレスがつかないようですが、PageBreakはプリンター
ドライバーがらみのせいか、とても挙動不審なところがあって
答えにくい質問なのだろうと思います。

PageBreakの取得や変更はプレビュー画面の状態でやると
エラーが避けられるようです。

Application.ScreenUpdating = False
ActiveWindow.View = xlPageBreakPreview
With ActiveSheet
 MsgBox .HPageBreaks(1).Location.Row
 MsgBox .HPageBreaks(2).Location.Row
 MsgBox .HPageBreaks(3).Location.Row
End With
ActiveWindow.View = xlNormalView
Application.ScreenUpdating = True

これでどうですか?
======================================================================

【6286】Re:nページ目の最初の行の取得 
 moomoo - 01/12/13(木) 9:28 - 
----------------------------------------------------------------------
  ▼あきらさん:

レスありがとうございました。
改ページプレビュー画面にしたところうまく行きました。

その他
ActiveCell.SpecialCells(xlLastCell).Select
で最終行最終列のセルを選択しておくとうまく行くようです。
======================================================================


【27477】Re:過去ログの検索 Ver3 #6241
お礼  moomoo  - 05/8/10(水) 9:58 -

引用なし
パスワード
   ▼りん さん:
おかけ様で過去の内容を知ることができました。
また、このとおりのマクロで問題なく動きました。
ありがとうございます。

9418 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free