| 
    
     |  | ▼ぱっせんじゃー さん: >ページの最終行は↓で取得できます。
 >印刷範囲を設定してないと、一番右
 >の行番号が取得できないので、
 >右下のセルの番地を取得する方法は
 >分かりません。
 >
 >Sub test()
 > With ActiveSheet
 > ActiveWindow.View = xlPageBreakPreview
 > If .HPageBreaks.Count <> 0 Then
 >  For i = 1 To .HPageBreaks.Count
 >   MsgBox .HPageBreaks(i).Location.Row
 >  Next i
 > End If
 > ActiveWindow.View = xlNormalView
 > End With
 >End Sub
 ありがとうございます。
 
 調べてみたのですが、
 Locationプロパティは改ページの左上になるようです。
 なので、
 
 Sub test()
 Dim rw As Long, cl As Long
 With ActiveSheet
 If .HPageBreaks.Count <> 0 Then
 rw = .HPageBreaks(1).Location.Row - 1
 End If
 If .VPageBreaks.Count <> 0 Then
 cl = .VPageBreaks(1).Location.Column - 1
 End If
 End With
 MsgBox "列:" & cl & " 行:" & rw
 End Sub
 
 とすることで一応取得は出来るのですが、
 ただ、列方向に2枚以上、行方向に2枚以上あることが前提条件になってしまいす。
 (I60セルが1枚で印刷できる最後のセルだとすると
 J列以降、61行以降にそれぞれ入力がある必要がある)
 
 たとえば、A1セルに文字を入力した時点で、1枚で印刷できる最後のセル(右下)を
 知ることは出来ないのでしょうか?
 
 ・・・とここまで書いて気付きました!
 空セルに仮入力すれば一枚分の行列取得できますね。
 お騒がせしました。ありがとうございました。
 
 Sub test()
 Dim rw As Long, cl As Long
 If Range("IV65536").Value = "" Then Range("IV65536").Value = "temp"
 With ActiveSheet
 If .HPageBreaks.Count <> 0 Then
 rw = .HPageBreaks(1).Location.Row - 1
 End If
 If .VPageBreaks.Count <> 0 Then
 cl = .VPageBreaks(1).Location.Column - 1
 End If
 End With
 If Range("IV65536").Value = "temp" Then Range("IV65536").Value = ""
 MsgBox "列:" & cl & " 行:" & rw
 End Sub
 
 |  |