Excel VBA質問箱 IV

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

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


35977 / 76738 ←次へ | 前へ→

【45949】Re:印刷ページの最後のセル
お礼  yama  - 07/1/18(木) 16:21 -

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

0 hits

【45895】印刷ページの最後のセル yama 07/1/17(水) 13:21 質問
【45896】Re:印刷ページの最後のセル ぱっせんじゃー 07/1/17(水) 13:31 発言
【45900】Re:印刷ページの最後のセル yama 07/1/17(水) 18:02 質問
【45916】Re:印刷ページの最後のセル ぱっせんじゃー 07/1/17(水) 19:46 発言
【45949】Re:印刷ページの最後のセル yama 07/1/18(木) 16:21 お礼
【45920】Re:印刷ページの最後のセル ichinose 07/1/17(水) 21:03 発言
【45951】Re:印刷ページの最後のセル yama 07/1/18(木) 16:25 お礼

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