アクティブウィンドウの整列

広告

ウィンドウの整列を行う時にアクティブウィンドウに対してだけ整列を行う事ができます。

アクティブウィンドウは通常1つだけですのでアクティブウィンドウだけ整列の対象としても、そのウィンドウが画面いっぱいに表示されるだけです。ただ、ウィンドウを複製している場合で、そのウィンドウがアクティブウィンドウだった場合、複製されたウィンドウなどが整列の対象となります。

アクティブウィンドウを整列するにはWindowsコレクションに対して「Arrange」メソッドを使う際に「ActiveWorkbook」引数を「True」に設定します。

Windows.Arrange ArrangeStyle:=xlArrangeStyleTiled, _
    ActiveWorkbook:=True

整列の仕方は「ArrangeStyle」引数で指定します。これは通常の場合と同じです。指定可能な値は下記の4つです。

定数整列方法
xlArrangeStyleCascade重ねて表示
xlArrangeStyleTilede並べて表示
xlArrangeStyleHorizontal上下に並べて表示
xlArrangeStyleVertical左右に並べて表示

「ActiveWorkbook」引数が「True」の場合だけ、「SyncHorizontal」引数と「SyncVertical」引数の指定が可能です。「SyncHorizontal」引数を「True」に設定すると整列されたウィンドウが横方向のスクロールが同期するようになります。つまりどこかのウィンドウを横にスクロールすると、他のウィンドウも同じように横方向へスクロールします。「SyncVertical」引数に「True」を指定すると縦方向のスクロールが同期します。

Windows.Arrange ArrangeStyle:=xlArrangeStyleTiled, _
    ActiveWorkbook:=True, _
    SyncHorizontal:=True

サンプルプログラム

では簡単なサンプルで試してみましょう。

下記のように3つのブックを開いた状態から開始します。

アクティブウィンドウの整列

testwindowope3.bas

Sub テスト()
    
    Windows("VBAsample.xls").Activate
    ActiveWindow.NewWindow
    
    Windows.Arrange _
        ArrangeStyle:=xlArrangeStyleVertical, _
        ActiveWorkbook:=True, _
        SyncVertical:=True

End Sub

上記マクロを実行すると次のよう表示されます。

アクティブウィンドウの整列

今回は元々3つのブックが開いていた状態で、「VBAsample.xls」というブックをアクティブにしてから複製しています。そしてアクティブウィンドウだけを対象に左右に並べて表示させています。全部で4つのブックが開いているわけですが、整列の対象になっているのはアクティブウィンドウとその複製されたウィンドウだけです。

今回は同時に縦方向のスクロールを同期させています。それぞれのウィンドウのタイトルに[垂直同期]と表示されています。

では右側のウィンドウを少し下へスクロールさせてみます。

アクティブウィンドウの整列

どちらかのウィンドウを下へスクロールすると、他のウィンドウも同じようにスクロールします。

Excel VBA入門の他の記事を見てみる

( Written by Tatsuo Ikura )