以下の内容はhttps://www.limecode.jp/entry/fungo/047-window-operationsより取得しました。


47本目:Window操作

Excel&VBA解説サイト「エクセルの神髄」様出題の問題集、
VBA100本ノック」に対する私の回答と解説のページです。

100本ノックの出題リストはこちらから
excel-ubara.com

出題:Window操作

#VBA100本ノック 47本目
ブックの全ウィンドウの全シートに対して以下の処理を行ってください。
・A1セルを選択しA1セルが見える状態にする
・ズームを85%
・枠線を非表示
・表示を標準
・印刷の向き「横」
※全ウィンドウという点を忘れずに
※ブックは任意

複数のウィンドウの全シート
◇ 出題ページはこちら

ソースコード

Option Explicit

' 100本ノック047:Window操作
Sub 全ウィンドウの全シートに表示設定を行う()
    
    Dim wb対象ブック As Workbook: Set wb対象ブック = ActiveWorkbook
    
    ' 全ウィンドウを順に処理
    Dim ウィンドウ As Window
    For Each ウィンドウ In wb対象ブック.Windows
        
        ウィンドウ.Activate
        
        ' 各ウィンドウごとに全シートを処理
        Dim シート As Worksheet
        For Each シート In wb対象ブック.Worksheets
        
            シート.Activate
        
            ' A1セルを選択しA1セルが見える状態にする
            ウィンドウ.ScrollRow = 1
            ウィンドウ.ScrollColumn = 1
            シート.Range("A1").Select
            
            ウィンドウ.Zoom = 85 ' ズームを85%
            ウィンドウ.DisplayGridlines = False ' 枠線を非表示
            ウィンドウ.View = xlNormalView ' 表示を標準
            シート.PageSetup.Orientation = xlLandscape  '印刷の向き「横」
        
        Next
        
    Next

End Sub

解説

ウィンドウごとの表示設定を行う問題です。

注意しなければいけないのが
「同じシートでもウィンドウが異なれば違う設定にできる」
点で、「新しいウィンドウを開く」を使用時に対応しなければいけません。


よってウィンドウ1のシート1、ウィンドウ1のシート2、・・・
  、ウィンドウ2のシート1、ウィンドウ2のシート2、・・・
と、各ウィンドウの中ですべてのシートに設定を行う必要があります。


それがわかればコード自体は特に難しいことはなく、
各ウィンドウをActiveにしてから各シートをActiveにすることで、
そのウィンドウ内の対象シートへ処理を実行することができます。


逆に言うと、

ウィンドウ.Zoom = 85

このコードはActiveSheetによって処理対象が変わるコードですので、
実際に使うときはこの仕様に注意して設定してください。




以上の内容はhttps://www.limecode.jp/entry/fungo/047-window-operationsより取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14