- Home ›
- Excel VBA入門 ›
- ウィンドウの操作 ›
- HERE
アクティブウィンドウの整列
ウィンドウの整列を行う時にアクティブウィンドウに対してだけ整列を行う事ができます。
アクティブウィンドウは通常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つのブックを開いた状態から開始します。
Sub テスト()
Windows("VBAsample.xls").Activate
ActiveWindow.NewWindow
Windows.Arrange _
ArrangeStyle:=xlArrangeStyleVertical, _
ActiveWorkbook:=True, _
SyncVertical:=True
End Sub
上記マクロを実行すると次のよう表示されます。
今回は元々3つのブックが開いていた状態で、「VBAsample.xls」というブックをアクティブにしてから複製しています。そしてアクティブウィンドウだけを対象に左右に並べて表示させています。全部で4つのブックが開いているわけですが、整列の対象になっているのはアクティブウィンドウとその複製されたウィンドウだけです。
今回は同時に縦方向のスクロールを同期させています。それぞれのウィンドウのタイトルに[垂直同期]と表示されています。
では右側のウィンドウを少し下へスクロールさせてみます。
どちらかのウィンドウを下へスクロールすると、他のウィンドウも同じようにスクロールします。
( Written by Tatsuo Ikura )
OfficePro