Excelでは、同じブックを2つのウィンドウで表示できるので離れた範囲や別のシートを並べて表示したり操作したりすることができます。
同じブックの違うシートを同時に見たり操作したり
このウィンドウをVBAで操作することができます。逆に普通に操作していることでもウィンドウを対象にしないとできないこともあるのでその解説をします。
Windows
Windowsは現在開いているウィンドウすべてを表します。
はじめにブックオブジェクトを指定し、ThisWorkbook.Windowsで対象ブックのウィンドウを指定しますが、省略すると、開いているすべてのブックの全てのウィンドウを表します。省略したときのそのウィンドウの元ブックを特定するには、Windows(1).Parentで親要素を見ることでブックを特定できます。
ActiveWindow
今、操作しているウィンドウを指します。
Count
Countはウィンドウの数を表します。ThisWorkbook.Windows.CountでThisWorkbookのウィンドウの数がわかります。
Caption
ウィンドウを複製した場合、タイトルバーにブック名に-1、-2のような名称が表示されます。
これがCaptionです。ActiveWindow.Captionで取得できますし、ActiveWindow.Caption=”ABC”でウィンドウのタイトルをブック名ではなく、ABCという文字に変えることができます。これはファイルを閉じたらリセットされます。
Zoom
Zoomは表示の拡大縮小率を表します。ActiveWindow.Zoom=75のように%は入力しません。Sheetに対し設定するもののようなイメージがありますが、実はZoomはWindowで指定します。シート1枚1枚に拡大縮小率を設定する場合はそのシートを表示しウィンドウ番号を取得する必要があるので、シートをアクティブにしてからActiveWindow.Zoom=50という処理をするのが手っ取り早いかもしれません。
次のようなループでブックにかかわらず、すべてのウィンドウの拡大縮小率を75%にすることはできます。
For Each wnd In Windows wnd.Zoom=75 Next
しかし、それぞれのブックに対し、表示しているシートの拡大縮小率しか変わりません。
開いている全てのブックの全てのシートに対して拡大縮小率を75%にするためには次のようなループにする必要があるでしょう。
For Each bk In Workbooks bk.Activate For Each sh In bk.Worksheets sh.Select ActiveWindow.Zoom=75 Next Next
このように本来ブックやシートで指定出来てほしい設定がWindowsでしか設定できなくなっているものがあります。それらはExcelのリボンだと表示タブの機能です。 たとえ同一ウィンドウを複製していなくてもこれらの設定はWindowsオブジェクトの設定となり、実際にそのウィンドウを表示した上でActiveWindowに対して設定していくのが一番手っ取り早い方法になります。
FreezePanes
そのウィンドウのウィンドウ枠の固定の状況を表します。
ActiveWindow.FreezePanes=Trueでその前に選択されているセル範囲に対してウィンドウ枠の固定がされます。ActiveWindow.FreezePanes=Falseで解除されます。
ウィンドウ枠の固定がされていなければセルD4でウィンドウ枠の固定をする場合は次のVBAで実行できます。
If Not ActiveWindow.FreezePanes Then Range("D4").Select ActiveWindow.FreezePanes=True End If
SplitColumn、SplitRow
SplitColumnはウィンドウの分割列でSplitRowはウィンドウの分割行です。
ActiveWindow.SplitColumn=0で列の分割をやめます。SplitRowも同様です。
View
Viewは標準表示や改ページプレビューなどの表示の方法を変えます。
ActiveWindow.View = xlNormalViewで標準表示、xlPageLayoutViewでページレイアウト、 xlPageBreakPreviewで改ページプレビューになります。
DisplayHeadings
DisplayHeadingsは行列の見出しを表示するかを示しています。Trueで表示、Falseで非表示です。
DisplayGridlines
DisplayGridlinesはセルの枠線を表示するかを示しています。Trueで表示、Falseで非表示です。
DisplayFormulaBar
DisplayFormulaBarは数式バーを表示するかを示しています。Trueで表示、Falseで非表示です。
コメント