' //////////////////////////////////////////////////////////////
' 全てのシートのカーソルを一番左上に合わせる
' さらに全てのシートを順々に、
'       画面スクロールをシートの一番左上に合わせる
'       印刷エリアの最終行を、使用エリアの最終行の値にする
' ことを繰り返すマクロ。
' //////////////////////////////////////////////////////////////
Sub SelectA1()

    ' 全てのシートのカーソルを一番左上に合わせる
    Worksheets.Select
    Range("A1").Select
    Worksheets(1).Select ' 一応一番前の選択にする。
    
    ' 全てのシートを順々に、次のことを繰り返す
    Dim Ws As Worksheet
    For Each Ws In Worksheets
        Ws.Activate
        
        ' 画面スクロールをシートの一番左上に合わせるマクロを呼び出す
        Call ScrollTop
        
        ' 印刷エリアの最終行を、使用エリアの最終行の値にするマクロを呼び出す
        Call PrintAreaLastMatch

    Next Ws
    Worksheets(1).Select ' 一応一番前の選択にする。

End Sub


' //////////////////////////////////////////////////////////////
' 画面スクロールをシートの一番左上に合わせるマクロ
' //////////////////////////////////////////////////////////////
Sub ScrollTop()

    With ActiveWindow
        .ScrollRow = 1
        .ScrollColumn = 1
    End With

End Sub


' //////////////////////////////////////////////////////////////
' 印刷エリアの最終行を、使用エリアの最終行の値にするマクロ
' //////////////////////////////////////////////////////////////
Sub PrintAreaLastMatch()

    Dim startRow As Long    ' 印刷エリアの最初の行
    Dim lastRow As Long     ' 印刷エリアの最後の行
    Dim startCol As Long    ' 印刷エリアの最初の列
    Dim lastCol As Long     ' 印刷エリアの最後の列
    Dim UsedstartRow As Long    ' 使用エリアの最初の行
    Dim UsedlastRow As Long     ' 使用エリアの最後の行

    ' 印刷エリアの行の取得
    With Range(ActiveSheet.PageSetup.PrintArea)
        startRow = .Rows.Row
        lastRow = startRow + .Rows.Count - 1
    End With
    
    ' 印刷エリアの列の取得
    With Range(ActiveSheet.PageSetup.PrintArea)
        startCol = .Columns.Column
        lastCol = startCol + .Columns.Count - 1
    End With

    ' 使用エリアの行の取得
    With ActiveSheet.UsedRange
        UsedstartRow = .Rows.Row
        UsedlastRow = UsedstartRow + .Rows.Count - 1
    End With

    ' 印刷エリアの最終行に、使用エリアの最終行の値を代入
    lastRow = UsedlastRow

    ' 印刷エリアの行と列を再設定
    ActiveSheet.PageSetup.PrintArea = Range(Cells(startRow, startCol), Cells(lastRow, lastCol)).Address

End Sub


' //////////////////////////////////////////////////////////////
' 全てのシートを改ページプレビューにするマクロ
' //////////////////////////////////////////////////////////////
Sub PageBreakPreviewAll()

    Dim nowIndex As Long    ' 今のシートのインデックス

    ' 今のシートのインデックスを取得
    nowIndex = ActiveSheet.Index
    
    ' 全てのシートを選択し、を改ページプレビューにする
    Worksheets.Select
    ActiveWindow.View = xlPageBreakPreview
    
    ' 元居たシートだけの選択に戻す
    Worksheets(nowIndex).Select

End Sub


' //////////////////////////////////////////////////////////////
' 全てのシートを標準プレビューにするマクロ
' //////////////////////////////////////////////////////////////
Sub NormalViewAll()

    Dim nowIndex As Long    ' 今のシートのインデックス

    ' 今のシートのインデックスを取得
    nowIndex = ActiveSheet.Index

    ' 全てのシートを選択し、標準プレビューにする
    Worksheets.Select
    ActiveWindow.View = xlNormalView
    
    ' 元居たシートだけの選択に戻す
    Worksheets(nowIndex).Select

End Sub