VBA技術解説
アクティブシート以外のWindowを設定できるWorksheetView

ExcelマクロVBAの問題点と解決策、VBAの技術的解説
公開日:2020-06-17 最終更新日:2020-09-05

アクティブシート以外のWindowを設定できるWorksheetView


VBAの中でも非常に分かりづらいオブジェクトにWindowオブジェクトがあります。
Windowオブジェクトは、ブックやシートの見方を変えることのできるものです。


Windowオブジェクトの集まりがWindowsコレクションです。
つまり、WindowオブジェクトはWindowsコレクションのメンバーです。

VBA マクロ アクティブシート以外 Window

WindowsとWindowの基本については以下を参照してください。
Windowsオブジェクト|VBA入門
・Windowの指定方法 ・Windowオブジェクトデータ型 ・Windowオブジェクトのプロパティとメソッド ・Windowオブジェクトの解説 ・Windowオブジェクトの使用例 ・アクティブシート以外のWindowの設定

枠線や行列見出しは、どのVBAサンプルを見ても大抵はActiveWindowに対して設定しているはずです。
これは、ActiveWindowのActiveSheetに対して設定していることになります。
では、ActiveSheet以外のシートにこれらを設定する方法は無いのでしょうか。
ここでは、シートをアクティブにすることなく表示(Window)に関する設定を行う方法と、設定可能なプロパティを紹介します。


Windowオブジェクトのメソッドとプロパティ

まずはWindowオブジェクトについて確認しておきましょう。

※Windowオブジェクトで設定できるのは、そのWindowのアクティブシートだけになります。

Windowオブジェクトのメソッド

名前 説明
Activate ウィンドウを Z オーダーの前面に移動します。
ActivateNext 指定されたウィンドウをアクティブにし、次にそのウィンドウを Z オーダーで一番後ろに移動します。
ActivatePrevious 指定されたウィンドウをアクティブにし、次に Z オーダーで一番後ろにあるウィンドウをアクティブにします。
Close オブジェクトを閉じます。
LargeScroll 指定されたページ数分だけ、ウィンドウの文字列をスクロールします。
NewWindow 新しいウィンドウ、または指定されたウィンドウのコピーを作成します。
PointsToScreenPixelsX 横方向の長さの値をポイント (ドキュメント座標) からピクセル (画面座標) に変換します。変換された値を長整数型 (Long) の値で返します。
PointsToScreenPixelsY 縦方向の長さの値をポイント (ドキュメント座標) からピクセル (画面座標) に変換します。変換した値を長整数型 (Long) の値で返します。
PrintOut オブジェクトを印刷します。
PrintPreview オブジェクトの印刷プレビュー (印刷時のイメージ) を表示します。
RangeFromPoint 画面座標で指定された x と y の位置にある Shape オブジェクト、または Range オブジェクトを返します。指定の座標に図形が存在しない場合は、Nothing を返します。
ScrollIntoView ドキュメント ウィンドウまたはペインの左上隅、右下隅のどちらかに、指定された四角形領域の内容が表示されるようにドキュメント ウィンドウをスクロールします。表示位置は引数 Start の値で異なります。
ScrollWorkbookTabs ウィンドウ下部のシート見出しをスクロールします。ただし、ブック内のシートはアクティブな状態に保持されます。
SmallScroll 指定された行数分または列数分だけ、ウィンドウの文字列をスクロールします。

Windowオブジェクトのプロパティ

名前 説明
ActiveCell 最前面に表示されている、アクティブ ウィンドウ (一番手前のウィンドウ) または指定されたウィンドウでのアクティブ セルを表す Range オブジェクトを返します。ウィンドウに表示されているシートがワークシートでないときは、このプロパティは失敗します。値の取得のみ可能です。
ActiveChart アクティブなグラフ シートまたは埋め込みグラフを表す Chart オブジェクトを返します。埋め込みグラフは、アクティブにされている状態だけではなく、選択されただけの状態でもアクティブと見なされます。アクティブなグラフがないときは、Nothing を返します。
ActivePane ウィンドウ内のアクティブなペインを表す Pane オブジェクトを取得します。値の取得のみ可能です。
ActiveSheet 作業中のブック、および指定されたウィンドウまたはブックのアクティブ シート (一番手前のシート) を表すオブジェクトを返します。アクティブ シートが存在しないときは Nothing を返します。
ActiveSheetView 指定されたウィンドウでのアクティブ シートの表示モードを表すオブジェクトを返します。値の取得のみ可能です。
Application 対象となるオブジェクトが指定されない場合は、Excel アプリケーション (Application オブジェクト) を返します。対象となるオブジェクトが指定された場合は、指定されたオブジェクトを作成した Application オブジェクトを返します。OLE オートメーションを使っていて、オブジェクトのアプリケーションにアクセスするときなどに、このプロパティを使います。値の取得のみ可能です。
AutoFilterDateGrouping True に設定すると、データ グループのオート フィルターが指定されたウィンドウに表示されます。値の取得および設定が可能です。ブール型 (Boolean) の値を使用します。
Caption ドキュメント ウィンドウのタイトル バーに表示される名前を表すバリアント型 (Variant) の値を取得、または設定します。
Creator 現在のオブジェクトが作成されたアプリケーションを示す 32 ビットの整数を取得します。値の取得のみ可能です。長整数型 (Long) の値を使用します。
DisplayFormulas True の場合、ウィンドウは数式を表示します。False の場合、数値が表示されます。値の取得および設定が可能です。ブール型 (Boolean) の値を使用します。
DisplayGridlines True の場合、枠線を表示します。値の取得および設定が可能です。ブール型 (Boolean) の値を使用します。
DisplayHeadings 行と列の両方の見出しを表示する場合は True に設定し、見出しを表示しない場合は False に設定します。値の取得および設定が可能です。ブール型 (Boolean) の値を使用します。
DisplayHorizontalScrollBar True の場合、水平スクロール バーを表示します。値の取得および設定が可能です。ブール型 (Boolean) の値を使用します。
DisplayOutline True の場合、アウトライン記号を表示します。値の取得および設定が可能です。ブール型 (Boolean ) の値を使用します。
DisplayRightToLeft True の場合、指定されたウィンドウの表示が右から左の表示方向になります。False の場合、オブジェクトは左から右に表示されます。値の取得のみ可能です。ブール型 (Boolean) の値を使用します。
DisplayRuler True に設定すると、指定したウィンドウにルーラーが表示されます。値の取得および設定が可能です。ブール型 (Boolean) の値を使用します。
DisplayVerticalScrollBar True の場合、垂直スクロール バーを表示します。値の取得および設定が可能です。ブール型 (Boolean) の値を使用します。
DisplayWhitespace True に設定すると空白領域が表示されます。値の取得および設定が可能です。ブール型 (Boolean) の値を使用します。
DisplayWorkbookTabs True の場合、シート見出しを表示します。値の取得および設定が可能です。ブール型 (Boolean) の値を使用します。
DisplayZeros True の場合、ゼロ値を表示します。値の取得および設定が可能です。ブール型 (Boolean) の値を使用します。
EnableResize True の場合、ウィンドウの大きさを変更できます。値の取得および設定が可能です。ブール型 (Boolean) の値を使用します。
FreezePanes True の場合、分割ウィンドウ枠を固定します。値の取得および設定が可能です。ブール型 (Boolean) の値を使用します。
GridlineColor 枠線の色を RGB 値で設定します。値の取得および設定が可能です。長整数型 (Long) の値を使用します。
GridlineColorIndex 枠線の色を、現在のカラー パレットのインデックス値または定数で設定します。値の取得および設定が可能です。XlColorIndex クラスの定数を使用します。
Height ウィンドウの高さをポイント単位で表す倍精度浮動小数点型 (Double) の値を取得、または設定します。
Index 類似するオブジェクトのコレクション内でのオブジェクトのインデックス番号を表す長整数型 (Long) の値を返します。
Left クライアント領域の左端から、ウィンドウの左端までの距離をポイント単位で表す倍精度浮動小数点型 (Double) の値を取得、または設定します。
OnWindow ウィンドウがアクティブにされたときに実行するプロシージャの名前を設定します。値の取得および設定が可能です。文字列型 (String) の値を使用します。
Panes 指定されたウィンドウのすべてのペインを表す Panes コレクションを返します。値の取得のみ可能です。
Parent 指定されたオブジェクトの親オブジェクトを取得します。値の取得のみ可能です。
RangeSelection 指定されたウィンドウのワークシートで選択されているセル範囲を表す Range オブジェクトを返します。このオブジェクトはワークシートで描画オブジェクトがアクティブになっていたり、選択されていたりしても返されます。値の取得のみ可能です。
ScrollColumn ウィンドウ枠 (ペイン) 内またはウィンドウ内で左端に表示される列の番号を設定します。値の取得および設定が可能です。長整数型 (Long) の値を使用します。
ScrollRow ウィンドウ枠 (ペイン) 内またはウィンドウ内で上端に表示される行の番号を設定します。値の取得および設定が可能です。長整数型 (Long) の値を使用します。
SelectedSheets 指定されたウィンドウで選択されているすべてのシートを表す Sheets コレクションを返します。値の取得のみ可能です。
Selection Windows オブジェクトの指定されたウィンドウを返します。
SheetViews 指定されたウィンドウの SheetViews オブジェクトを取得します。値の取得のみ可能です。
Split True の場合、ウィンドウを分割します。値の取得および設定が可能です。ブール型 (Boolean) の値を使用します。
SplitColumn ウィンドウの左右分割位置を示す列数 (垂直分割線の左側にある列の数) を設定します。値の取得および設定が可能です。長整数型 (Long) の値を使用します。
SplitHorizontal ウィンドウの左右分割位置をポイント?(ポイント: 印刷する文字のサイズ (高さ) を指定する基本単位。1 ポイントは、約 0.0353 cm (1/72 インチ) です。)単位で設定します。値の取得および設定が可能です。倍精度浮動小数点型 (Double) の値を使用します。
SplitRow ウィンドウの上下分割位置を示す行数 (水平分割線の上側にある行の数) を設定します。値の取得および設定が可能です。長整数型 (Long) の値を使用します。
SplitVertical ウィンドウの上下分割位置をポイント?(ポイント: 印刷する文字のサイズ (高さ) を指定する基本単位。1 ポイントは、約 0.0353 cm (1/72 インチ) です。)単位で設定します。値の取得および設定が可能です。倍精度浮動小数点型 (Double) の値を使用します。
TabRatio ウィンドウのシート見出し領域と水平スクロール バーの幅の比率を設定します。使用できる比率の範囲は 0 ~ 1 で、既定値は 0.6 です。値の取得および設定が可能です。倍精度浮動小数点型 (Double) の値を使用します。
Top ウィンドウの上端から使用可能領域 (メニュー、固定ツールバー、数式バーの下の領域) の上端までの距離を表す倍精度浮動小数点型 (Double) の値を設定します。値の取得および設定が可能です。
Type ウィンドウの種類を表す XlWindowType クラスの定数を取得および設定します。
UsableHeight アプリケーション ウィンドウ領域内で、ウィンドウが使うことのできる範囲の最大限の高さをポイント?(ポイント: 印刷する文字のサイズ (高さ) を指定する基本単位。1 ポイントは、約 0.0353 cm (1/72 インチ) です。)単位で返します。値の取得のみ可能です。倍精度浮動小数点型 (Double) の値を使用します。
UsableWidth アプリケーション ウィンドウ領域内で、ウィンドウが使うことのできる範囲の最大限の幅をポイント?(ポイント: 印刷する文字のサイズ (高さ) を指定する基本単位。1 ポイントは、約 0.0353 cm (1/72 インチ) です。)単位で返します。値の取得のみ可能です。倍精度浮動小数点型 (Double) の値を使用します。
View ウィンドウに表示するビューを設定します。値の取得および設定が可能です。XlWindowView クラスの定数を使用します。
Visible オブジェクトを表示するかどうかを表すブール型 (Boolean) の値を設定します。値の取得および設定が可能です。
VisibleRange ウィンドウ内またはウィンドウ枠 (ペイン) 内に表示されているセルの範囲を表す Range オブジェクトを取得します。一部しか表示されていない列や行も対象になります。値の取得のみ可能です。
Width ウィンドウの幅をポイント単位で表す倍精度浮動小数点型 (Double) の値を取得、または設定します。
WindowNumber ウィンドウ番号を返します。たとえば、BOOK1.XLS:2 の場合、ウィンドウ名の後に続く 2 がウィンドウ番号になります。通常、最初に開かれるウィンドウ番号は 1 です。値の取得のみ可能です。長整数型 (Long) の値を使用します。
WindowState ウィンドウの状態を設定します。値の取得および設定が可能です。XlWindowState クラスの定数を使用します。
Zoom ウィンドウの表示サイズを、パーセント単位 (100 は通常の大きさの表示、200 は 2 倍の大きさの表示、など) で表すバリアント型 (Variant) の値を取得、または設定します。

アクティブシート以外の表示(Window)に関する設定

オブジェクトの階層構造を見ていきましょう。

Dim v1 As Window
Set v1 = Windows(1)
Dim v2 As SheetViews
Set v2 = v1.SheetViews
Dim v3 As WorksheetView
Set v3 = v2.Item(1) '1番目のシート
Itemは省略可能です。
また、シート名でも指定できます。
上記であれば、
v2(1)
v2("シート名")

Windows(1)はウィンドウが1つならActiveWindowと同じになります。

Windows(1)
 ┗SheetViews
   ┗WorksheetView ・・・ Itemで指定したシート

SheetViews

指定したウィンドウのシートビュー オブジェクトを返します。
読み取り専用です。
SheetViewsのプロパティ

名前 説明
Application オブジェクト修飾子を指定せずに使用した場合、Microsoft Excel アプリケーションを表すApplication オブジェクトを返します。
オブジェクト修飾子を指定した場合、指定したオブジェクトを作成した Application オブジェクトを返します。
値の取得のみ可能です。
Count コレクションに含まれるオブジェクトの数を返します。値の取得のみ可能です。
長整数型 (Long) の値を使用します。
Creator 現在のオブジェクトが作成されたアプリケーションを示す 32 ビットの整数を取得します。
値の取得のみ可能です。長整数型 (Long) の値を使用します。
Item ブックでのビューを表す SheetView オブジェクト(WorksheetView)を返します。
値の取得のみ可能です。
Parent 指定されたオブジェクトの親オブジェクトを取得します。
値の取得のみ可能です。

WorksheetView

単一のワークシート ビューの動作を定義するオブジェクトです。
WorksheetViewのプロパティ

名前 説明
Application オブジェクト修飾子を指定せずに使用した場合、Microsoft Excel アプリケーションを表す Application オブジェクトを返します。
オブジェクト修飾子を指定した場合、指定したオブジェクトを作成した Application オブジェクトを返します。値の取得のみ可能です。
Creator 現在のオブジェクトが作成されたアプリケーションを示す 32 ビットの整数を取得します。
値の取得のみ可能です。長整数型 (Long) の値を使用します。
DisplayFormulas 現在のワークシート ビューで数式を表示するか非表示にするかを設定します。
値の取得および設定が可能です。
ブール型 (Boolean ) の値を使用します。
DisplayGridlines True の場合、枠線を表示します。
値の取得および設定が可能です。
ブール型 (Boolean) の値を使用します。
DisplayHeadings 行と列の両方の見出しを表示する場合はTrueに設定し、見出しを表示しない場合はFalseに設定します。
値の取得および設定が可能です。
ブール型 (Boolean) の値を使用します。
DisplayOutline True の場合、アウトライン記号を表示します。
値の取得および設定が可能です。ブール型 (Boolean) の値を使用します。
DisplayZeros True の場合、ゼロ値を表示します。
値の取得および設定が可能です。ブール型 (Boolean) の値を使用します。
Parent 指定されたオブジェクトの親オブジェクトを取得します。
値の取得のみ可能です。
Sheet 指定された WorksheetView オブジェクトのシート名を返します。
値の取得のみ可能です。

アクティブシート以外の表示(Window)を設定するVBA

上記のWorksheetViewはアクティブシート以外も取得可能です。

VBA マクロ アクティブシート以外 Window

With Windows(1).SheetViews.Item(1)
  .DisplayFormulas = False
  .DisplayGridlines = False
  .DisplayHeadings = False
  .DisplayOutline = False
  .DisplayZeros = False
End With

Windows(1)は、通常はActiveWindowで良いでしょう。
Windows(1)は、ウインドウが1つならActiveWindowと同じになります。

.Item(1)としているので先頭シートになりますがItemは省略できます。
SheetViews(1)
また、シート名で指定できますので、
先頭シートが"Sheet1"であれば、以下のように書くことが出来ます。

ActiveWindow.SheetViews("Sheet1")

残念ながら、WorksheetViewで設定できるものは、Windowオブジェクトのプロパティのごく一部に限られています。
ですが、シートをアクティブにすることなく設定できるのはとても便利です。
覚えておけば、場合によっては便利に使える場合もあると思います。

全ウィンドウの全シートのWorksheetViewを設定するVBA

全ウィンドウに対して設定することはあまり無いとは思いますが、VBAのサンプルとして掲載しておきます。

Sub sample()
  Dim wd As Window
  Dim sv As WorksheetView
  For Each wd In Application.Windows
    For Each sv In wd.SheetViews
      With sv
        .DisplayFormulas = False
        .DisplayGridlines = False
        .DisplayHeadings = False
      End With
    Next
  Next
End Sub



同じテーマ「マクロVBA技術解説」の記事

ユーザーに絶対に停止させたくない場合のVBA設定
列幅・行高をDPI取得しピクセルで指定する
VBAでWMIの使い方について
アクティブシート以外のWindowを設定できるWorksheetView
LSetとユーザー定義型のコピー(100桁の足し算)
省略可能なVariant引数の参照不可をラップ関数で利用
ブックのいろいろな開き方(GetObject,参照設定,アドイン)
入力規則への貼り付けを禁止する
Select Caseでの短絡評価(ショートサーキット)の使い方
RangeオブジェクトのFor EachとAreasについて
画像が行列削除についてこない場合の対処


新着記事NEW ・・・新着記事一覧を見る

VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
累計を求める数式あれこれ|エクセル関数応用(2024-01-22)
複数の文字列を検索して置換するSUBSTITUTE|エクセル入門(2024-01-03)
いくつかの数式の計算中にリソース不足になりました。|エクセル雑感(2023-12-28)
VBAでクリップボードへ文字列を送信・取得する3つの方法|VBA技術解説(2023-12-07)
難しい数式とは何か?|エクセル雑感(2023-12-07)
スピらない スピル数式 スピらせる|エクセル雑感(2023-12-06)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.変数宣言のDimとデータ型|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.並べ替え(Sort)|VBA入門
8.条件分岐(IF)|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.マクロとは?VBAとは?VBAでできること|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ