2018年01月02日
ExcelVBAで車庫証明アプリを作ろう
ネットで簡単!宅配買取ならhobby man!
マイクロソフトアクセスの記事はこちら
人気ブログランキングへ
にほんブログ村
印刷する場合
このままの状態でも「車庫図面」でページを設定して印刷すれば
済むことですが、何ページを印刷すれば良いか分かるようにしましょう。
ページ番号を取得する方法
少し長くて複雑ですが下記に記載します。
Dim Lastpage As Long, Lastpage2 As Long, p As Integer, pp As Integer
Dim LastR As Long, LastC As Integer, i As Integer, j As Integer
Dim Nrow As Long, NLrow As Long, Ncol As Integer, NLcol As Integer
Dim Crow As Long, Ccol As Integer
Dim page As Integer 'ページ番号の変数
Application.ScreenUpdating = False '画面の動きを固定
Crow = Selection.Row '選択セルの行番号
Ccol = Selection.Column '選択セルの列番号
'正しく改ページ位置を取得する為、一旦改ページプレビューにする
ActiveWindow.View = xlPageBreakPreview
'縦方向最終改ページ数取得
Lastpage = ActiveSheet.HPageBreaks.Count
'横方向最終改ページ数取得
Lastpage2 = ActiveSheet.VPageBreaks.Count
'入力済み最終行、最終列取得
With ActiveSheet.UsedRange
LastR = .Row + .Rows.Count - 1
LastC = .Column + .Columns.Count - 1
End With
Ncol = 1
p = 0 'ページ数カウント初期値
'横方向改ページ分繰り返し
For j = 1 To Lastpage2 + 1
If j = Lastpage2 + 1 Then
If Ncol > LastC Then Exit For
NLcol = LastC
Else
NLcol = ActiveSheet.VPageBreaks(j).Location.Column - 1
End If
Nrow = 1
'縦方向改ページ分繰り返し
For i = 1 To Lastpage + 1
If i = Lastpage + 1 Then
If Nrow > LastR Then Exit For
NLrow = LastR
Else
NLrow = ActiveSheet.HPageBreaks(i).Location.Row - 1
End If
p = p + 1 'ページ数カウント
If Crow >= Nrow And Crow <= NLrow Then
If Ccol >= Ncol And Ccol <= NLcol Then
pp = p
End If
End If
Nrow = NLrow + 1
Next
Ncol = NLcol + 1
Next
'改ページプレビュー、画面の固定を戻す
ActiveWindow.View = xlNormalView
Application.ScreenUpdating = True
ActiveWindow.SelectedSheets.PrintOut pp, pp ‘必要なページを印刷する
上記に関しては詳しい説明は省きます。
ステップインで一つずつ動かしていけば、
ある程度動作は分かると思います。
印刷の手前で「MsgBox "選択中のセルは、
" & pp & " ページ目です"」という記述をすれば
下のようなメッセージが表示されます。
印刷をする場合は下記の記述をすれば必要なページが印刷されます。
ActiveWindow.SelectedSheets.PrintOut pp, pp
マイクロソフトアクセスの記事はこちら
人気ブログランキングへ
にほんブログ村
印刷する場合
このままの状態でも「車庫図面」でページを設定して印刷すれば
済むことですが、何ページを印刷すれば良いか分かるようにしましょう。
ページ番号を取得する方法
少し長くて複雑ですが下記に記載します。
Dim Lastpage As Long, Lastpage2 As Long, p As Integer, pp As Integer
Dim LastR As Long, LastC As Integer, i As Integer, j As Integer
Dim Nrow As Long, NLrow As Long, Ncol As Integer, NLcol As Integer
Dim Crow As Long, Ccol As Integer
Dim page As Integer 'ページ番号の変数
Application.ScreenUpdating = False '画面の動きを固定
Crow = Selection.Row '選択セルの行番号
Ccol = Selection.Column '選択セルの列番号
'正しく改ページ位置を取得する為、一旦改ページプレビューにする
ActiveWindow.View = xlPageBreakPreview
'縦方向最終改ページ数取得
Lastpage = ActiveSheet.HPageBreaks.Count
'横方向最終改ページ数取得
Lastpage2 = ActiveSheet.VPageBreaks.Count
'入力済み最終行、最終列取得
With ActiveSheet.UsedRange
LastR = .Row + .Rows.Count - 1
LastC = .Column + .Columns.Count - 1
End With
Ncol = 1
p = 0 'ページ数カウント初期値
'横方向改ページ分繰り返し
For j = 1 To Lastpage2 + 1
If j = Lastpage2 + 1 Then
If Ncol > LastC Then Exit For
NLcol = LastC
Else
NLcol = ActiveSheet.VPageBreaks(j).Location.Column - 1
End If
Nrow = 1
'縦方向改ページ分繰り返し
For i = 1 To Lastpage + 1
If i = Lastpage + 1 Then
If Nrow > LastR Then Exit For
NLrow = LastR
Else
NLrow = ActiveSheet.HPageBreaks(i).Location.Row - 1
End If
p = p + 1 'ページ数カウント
If Crow >= Nrow And Crow <= NLrow Then
If Ccol >= Ncol And Ccol <= NLcol Then
pp = p
End If
End If
Nrow = NLrow + 1
Next
Ncol = NLcol + 1
Next
'改ページプレビュー、画面の固定を戻す
ActiveWindow.View = xlNormalView
Application.ScreenUpdating = True
ActiveWindow.SelectedSheets.PrintOut pp, pp ‘必要なページを印刷する
上記に関しては詳しい説明は省きます。
ステップインで一つずつ動かしていけば、
ある程度動作は分かると思います。
印刷の手前で「MsgBox "選択中のセルは、
" & pp & " ページ目です"」という記述をすれば
下のようなメッセージが表示されます。
印刷をする場合は下記の記述をすれば必要なページが印刷されます。
ActiveWindow.SelectedSheets.PrintOut pp, pp
【このカテゴリーの最新記事】
-
no image
この記事へのコメント
コード例のインデントがなくなっててなにがなにやら。。。
Posted by at 2018年09月05日 21:50
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/7151580
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック