Home » エクセルマクロ・Excel VBAの使い方 » Windowオブジェクト » VBAでアクティブでないシートの表示倍率・ズームを変更する

VBAでアクティブでないシートの表示倍率・ズームを変更する

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

VBAでアクティブでないシートのズーム・表示倍率を変更するには?

このサイト『インストラクターのネタ帳』へのアクセスログをチェックしていて、
「vba zoom 別のシート」
といった検索キーワードに気づきました。

Excel VBAで、アクティブではない別のシートの、ズーム・表示倍率を変更するにはどうすればいいのか、探していらしたのでしょう。

[スポンサードリンク]

アクティブシートの表示倍率を変更するサンプルマクロ

まず、アクティブなシートの表示倍率を変更するプロシージャを確認しておきましょう。

Sub アクティブシートの表示倍率を変更する()
 ActiveWindow.Zoom = 100
End Sub

上記のSubプロシージャのように、WindowオブジェクトのZoomプロパティに、

VBAでアクティブでないシートのズーム・表示倍率を変更するには?

数値を指定すれば表示倍率を変更できます。

ポイントは、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」というプロパティは見当たりません。

VBAでアクティブでないシートのズーム・表示倍率を変更するには?

全シートの表示倍率を変更するサンプルマクロ

ですから、アクティブでないシートの表示倍率を変更するには、一旦選択してアクティブにする必要があります。

以下のようなSubプロシージャで、(非表示シートが存在しない)アクティブなブックの全シートの表示倍率を変更することができます。

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

 Sheets(idx).Select
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

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Windowオブジェクト » VBAでアクティブでないシートの表示倍率・ズームを変更する

「Windowオブジェクト」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.