人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

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

●質問者: kitatom
●カテゴリ:コンピュータ インターネット
✍キーワード:Excel VBA アクティブ コード セル
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● spyglass
●0ポイント

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

「Value = ActiveSheet.Name」

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

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

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

◎質問者からの返答

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


2 ● tikirou
●55ポイント

以下のページに

サンプルがあります。

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

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で印刷エリア取って指定するのが正当な気も)

◎質問者からの返答

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


3 ● Mook
●55ポイント

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

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...

◎質問者からの返答

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ