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

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

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

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

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

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

[スポンサードリンク]

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

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


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 n As Long
 Dim i As Long

 n = ActiveSheet.Index
 For i = 1 To Sheets.Count
  Sheets(i).Select
  ActiveWindow.Zoom = 100
 Next i
 Sheets(n).Select
End Sub

今、アクティブなシートのインデックス番号を変数に格納しておいてから、
  n = ActiveSheet.Index

全シートに対するFor~Nextループを回して、
 For i = 1 To Sheets.Count

選択してから、表示倍率を変更して、
  Sheets(i).Select
  ActiveWindow.Zoom = 100

ループを抜けたら、元のアクティブシートを選択しています。
  Next i
  Sheets(n).Select

[スポンサードリンク]

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

TrackBack:0

TrackBack URL

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

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

検索


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

.