このサイト『インストラクターのネタ帳』へのアクセスログをチェックしていて、
「vba zoom 別のシート」
といった検索キーワードに気づきました。
Excel VBAで、アクティブではない別のシートの、ズーム・表示倍率を変更するにはどうすればいいのか、探していらしたのでしょう。
アクティブシートの表示倍率を変更するサンプルマクロ
まず、アクティブなシートの表示倍率を変更するプロシージャを確認しておきましょう。
ActiveWindow.Zoom = 100
End Sub
上記のSubプロシージャのように、WindowオブジェクトのZoomプロパティに、
数値を指定すれば表示倍率を変更できます。
ポイントは、Worksheetオブジェクトではなく、WindowオブジェクトのZoomプロパティだという点です。
ZoomプロパティはWindowオブジェクトに用意されている
「vba zoom 別のシート」
と検索なさった方は、
Sheets(1).Zoom = 100
Worksheets(1).Zoom = 100
といったオブジェクト式で、アクティブになっていない他のシートの表示倍率を変更できることを期待してらしたのでしょうけれど、残念ながらそんなことはできません。
ZoomプロパティがWorksheetオブジェクトやChartオブジェクトに用意されていたのなら、
Sheets(1).Zoom = 100
Worksheets(1).Zoom = 100
と書けたのですが、ZoomプロパティはWindowオブジェクトに用意されているプロパティですから、Windowオブジェクトを取得する式を「.Zoom」の前に書かなければなりません。
オブジェクトブラウザーで「zoom」を完全一致検索しても、Worksheetオブジェクトなどに「zoom」というプロパティは見当たりません。
全シートの表示倍率を変更するサンプルマクロ
ですから、アクティブでないシートの表示倍率を変更するには、一旦選択してアクティブにする必要があります。
以下のようなSubプロシージャで、(非表示シートが存在しない)アクティブなブックの全シートの表示倍率を変更することができます。
Dim idx As Long
idx = ActiveSheet.Index
Dim i As Long
For i = 1 To Sheets.Count
Sheets(i).Select
ActiveWindow.Zoom = 100
Next
End Sub
今、アクティブなシートのインデックス番号を変数に格納しておいてから、
idx = ActiveSheet.Index
全シートに対するFor~Nextループを回して、
For i = 1 To Sheets.Count
選択してから、表示倍率を変更して、
Sheets(i).Select
ActiveWindow.Zoom = 100
ループを抜けたら、元のアクティブシートを選択しています。
Sheets(idx).Select
最終更新日時:2020-09-14 13:24
- Newer:ウォッチウィンドウでセルの値を確認する
- Older:グループ化図形を目立たせるマクロ
Home » エクセルマクロ・Excel VBAの使い方 » Windowオブジェクト » VBAでアクティブでないシートの表示倍率・ズームを変更する