|
▼ぱっせんじゃー さん:
>ページの最終行は↓で取得できます。
>印刷範囲を設定してないと、一番右
>の行番号が取得できないので、
>右下のセルの番地を取得する方法は
>分かりません。
>
>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
|
|