Categories: VBA基礎

EXCEL VBA 表示画面のコントロール①(アクティブウィンドウの参照、表示画面の拡大縮小:ActiveWindow/Zoom)

EXCEL VBA 表示画面のコントロール①(アクティブウィンドウの参照、表示画面の拡大縮小:ActiveWindow/Zoom)

 

●はじめに
EXCEL等で、表などを作成した時に表をユーザーに見やすくするためEXCELの画面表示を拡大縮小して画面の大きさに対して調整を行うと思いますが、EXCEL VBAでは、Zoomプロパティを使って調整する事ができます。複数のシートを一括に拡大縮小する際には、便利な機能たど思います。また、現在のアクティブウィンドウの数やタイトル名を取得するWindowオブジェクトの利用方法も併せて説明いたします。

 

 

●書式の説明
Application.Window
Application.ActiveWindow※現在の開いているウインドウの数を取得及びタイトル名を取得する。
使用例:A = Windows.count    ‘ウインドウ数を取得(数値)
使用例:B = ActiveWindow.Caption ‘タイトル名を取得(文字列)オブジェクト.Zoom

オブジェクト.Zoom = 設定値

※指定した範囲に対してウインドの表示倍率を変更する使用例:A = ActiveWindows.Zoom ‘表示倍率を取得
使用例:ActiveWindow.Zoom = 120 ‘表示倍率を120%にする。

 

 

現在の開いているウインドウ数(ブック数)とアクティブウィンドウのタイトル名を取得

 

 

●プログラム説明 (サンプル①) Windows.Count    ActiveWindow.Caption
下記のサンプルプログラムは、現在開いているウィンド数(ブックの数)と現在のアクティブウィンドウのタイトル名を表示するプログラムです。

 

Sub Books01()

    Dim WinCount As Integer
    Dim Wintitle As String

    WinCount = Windows.Count  '現在開いている全てのウィンドウの数(ブックの数)
    
    Wintitle = ActiveWindow.Caption   '現在のアクティブウィンドウのタイトル名

    MsgBox "現在の開いているウィンドウの数:" & WinCount & vbCrLf & "アクティブウィンドウのタイトル:" & Wintitle


End Sub

 

 

●実行前~実行後 ※上記のプログラムを実行しますと、現在開いているウィンドウ数とアクティブウィンドウのタイトル名がメッセージボックスに表示しました。
(画面クリックして拡大)

 

 

ウィンドウ表示されてる表示倍率の変更・設定

 

 

●プログラム説明 (サンプルプログラム②)

下記のサンプルプログラムは、現在開いているアクティブウィンドに表示されている表に対して、ウインドのサイズに合わせて拡大縮小表示させるプログラムです。

『実行手順』
①表の範囲を選択します。
②ウインドの大きさに対して拡大または縮小表示させます。
(ActiveWindow.Zoom = True で自動調整 )
③表示サイズを変更した値をメッセージボックスにて表示させます。
④元のサイズ100%へ戻します。
⑤サイズを戻したことをメッセージボックスにて表示させます。

 

 

Sub Zoom01() '表示倍率変更

    Range("A1:C9").Select  '表の範囲を選択
    
    ActiveWindow.Zoom = True  '表のサイズに合わせて拡大表示

    MsgBox ActiveWindow.Zoom & "%に拡大表示しました"
    
    ActiveWindow.Zoom = 100  '元の設定の100%に戻します。
    
    MsgBox ActiveWindow.Zoom & "%に戻しました"

End Sub

 

 

●実行前~実行後 ※上記のプログラムを実行するとウインドの大きさに対して、表が拡大表示されました。
(画面クリックして拡大)

 

 

各シートにある表を画面のサイズに合わせて拡大縮小(全シート実行)

 

 

●プログラム説明 (サンプルプログラム③)

下記のサンプルプログラムは、各シートにある表を画面サイズに合わせて拡大縮小させるサンプルプログラムです。(シートが表示倍率が100%の場合は、画面

『実行手順』
①下図の通りに、ブックのシート毎(Sheet1~3)に、100%で表が表示されています。
②Sheet1から順番に表のサイズ範囲を選択します。
③現在のアクティブシートの表示倍率を取得します。
④現在のアクティブシートの表示倍率が100%の場合は、画面サイズに合わせて倍率変更
表示倍率が100%以外の場合は、画面サイズを100%に戻します。
⑤全てのシートに対して②~④を実行します。

 

Sub Zoom02() '各シートにある表のサイズを画面の大きさに合わせます。
    
    Dim Ws As Worksheet
    Dim N_Zoom As Long
    
    For Each Ws In Worksheets '全てのシートを繰り返す

        Ws.Activate  'シートをアクティブにする。(順番にSheet1⇒3)
        Ws.Range("A1").CurrentRegion.Select '現在のアクティブシートにある表の範囲を選択する。
        
        N_Zoom = ActiveWindow.Zoom  '現在のアクティブシートの表示倍率を取得する。
        
        If N_Zoom = 100 Then  'アクティブシートの倍率が100%の場合は、画面表示に合わせて倍率を変更
                ActiveWindow.Zoom = True    '倍率100%の場合は、表示画面に合わせる
            Else
                ActiveWindow.Zoom = 100    '倍率が100%以外の場合は、100%に戻す
        End If
    
    Next Ws
    
End Sub

 

 

●実行前~実行後 ※プログラム実行後、各シート毎に表示されている表が画面サイズに合わせて表示倍率が変更されました。 ※再度実行すると100%表示に戻ります。
(画面クリックして拡大)

 

 

最後まで、ご覧いただきまして誠に有難うございました。
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。

 

AKIRA