Excel VBAで質問です。いつもお世話になります。


アクティブセルのあるページの、ページ番号取得のためのコードをお教えください。

どうぞよろしくお願いいたします。

回答の条件
  • 1人2回まで
  • 登録:2006/09/28 07:41:14
  • 終了:2006/10/03 06:02:40

回答(3件)

id:spyglass No.1

spyglass回答回数455ベストアンサー獲得回数292006/09/28 09:10:18

単純に今開いているページのを知りたいのであれば

「Value = ActiveSheet.Name」

これでシート名が取得出来ますので「if Value="XXX"」などでそれぞれの処理が出来るかと思います。

以下などを参考にしてみてください。

http://www.moug.net/tech/exvba/0050016.htm

id:kitatom

シート名ではなく、ページ番号です。

2006/09/28 09:13:42
id:tikirou No.2

tikirou回答回数80ベストアンサー獲得回数82006/09/28 09:43:53

ポイント55pt

以下のページに

サンプルがあります。

"アクティブセルのページ数を取得するには?"

http://park11.wakwak.com/~miko/Excel_Note/99-05_sonota.htm#99-05...

※注意

'入力済み最終行、最終列取得

With ActiveSheet.UsedRange

LastR = .Row + .Rows.Count - 1

LastC = .Column + .Columns.Count - 1

End With


上記のサンプルの場合、入力済みの最終行、最終列から

ページ内に入力がない場合 ページ数が0と出てしまいます。

それで問題がありそうならLastRとLastCの値を変更して下さい。


(速度的に問題なさそうなら65534指定しちゃっていいのかな・・・ActiveSheet.PageSetup.PrintAreaで印刷エリア取って指定するのが正当な気も)

id:kitatom

ありがとございました。参考にさせていただきます。

2006/09/28 10:00:38
id:Mook No.3

Mook回答回数1312ベストアンサー獲得回数3912006/09/28 09:58:23

ポイント55pt

こんな感じでどうでしょうか。

Sub CheckPrintPage()
    Dim selectCell As Range
    Set selectCell = ActiveCell
    With ActiveSheet
' ----選択セルの範囲チェック
        If Intersect(selectCell, Range(.PageSetup.PrintArea)) Is Nothing Then
            MsgBox "選択されたセルは印刷範囲外です。"
            Exit Sub
        End If
' ----現在の印刷範囲を保存
        Dim backupAddress As String, printAddress As Variant
        backupAddress = .PageSetup.PrintArea
        printAddress = Split(backupAddress, ":")
        
        Dim startRange As Range, endRange As Range
        Set startRange = Range(printAddress(0))
        Set endRange = Range(printAddress(1))
        
        Dim vPage As Integer, hPage As Integer
        vPage = .VPageBreaks.Count + 1
        hPage = .HPageBreaks.Count + 1
        
' ----選択セルまでの範囲に変更
        .PageSetup.PrintArea = startRange.AddressLocal & ":" & selectCell.AddressLocal
        
        Select Case .PageSetup.Order
        Case xlOverThenDown ' 複数行あった場合、縦優先
            page = (vPage) * (.HPageBreaks.Count) + .VPageBreaks.Count + 1
        Case xlDownThenOver ' 複数列あった場合、横優先
            page = (.VPageBreaks.Count) * (hPage) + .HPageBreaks.Count + 1
        End Select
' ----元の印刷範囲に設定
        .PageSetup.PrintArea = backupAddress
        MsgBox "選択セルは" & page & "/" & vPage * hPage & " ページです。"
    End With
End Sub

下記のURLも参考になるかと思います。

http://park11.wakwak.com/~miko/Excel_Note/09-01_insatu.htm#09-01...

id:kitatom

ありがとございました。参考にさせていただきます。

2006/09/28 10:00:57

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません