おはようございます、わたあめです。今日はExcelの「新しいウィンドウで開く」という機能を使ってウィンドウを立ち上げたあと、「ウィンドウの整列」を使った時のウィンドウの並び順についての記事です。
ウィンドウの整列で左右に並べて表示をすると、意図しない整列順になることがありませんか?Sheet1(左)→Sheet2(右)で並べたいのに、画像のように思った通りの表示順にならないことがありました。
並び順ってどのように決まるの?思った通りに並べるには?を、「左右に並べて表示」に絞ってにまとめてみました。おまけで、VBAマクロも紹介しています。それでは、いってみましょう!
整列ルール:重なりの一番上(手前)にある順から左に並ぶ
新しいウィンドウを開いて、ウィンドウの整列で左右に並べて表示するを選択した場合、最後に開いたウィンドウから左に並べていく動きに見えました。言い換えると、Windowsが重なりの一番上(手前)にある順から左に並んでいくような動きです。
具体的には、ウィンドウを5つ立ち上げると、Book1:1,Book1:2,Book1:3,Book1:4,Book1:5…という名前でウィンドウが増えていきます。重なりは、最後に立ち上げたBook1:5のウィンドウが一番上で、Book1:4が一つ下…一番下はBook1:1のウィンドウとなっている状態です。
この状態で左右に並べて表示にすると、重なりの一番上のウィンドウから左から並んでいく動きでした。
これをBook1:1→2→3→4→5の順にするには、ウィンドウを立ち上げた後に、ウィンドウの重なりを上からBook1:1→2→3→4→5の順にしておけば良いです!イメージは以下の通りで、ウィンドウの重なりの順を変更して、整列すれば解決です。
まずは、重なり順を以下図のように変更します。Book1:1が一番手前に来るように、左に並べたいウィンドウが手前に来るようにします。
この状態で左右に並べて表示すると、以下図のような並びになります。
これで、疑問の解決に少し役立てたでしょうか?
という方もいらっしゃるかと思います。次章から表示順を調整して左右に並べるVBAマクロのサンプルを紹介していきます。
ウィンドウの整列を行うサンプルマクロ
ウィンドウの整列で左右に並べて表示するサンプルマクロを紹介します。並び順を考慮せずにウィンドウを5つ立ち上げ、そのまま整列させるマクロと並び順を調整して整列させるマクロ2種を紹介します。
並び順を考慮せずに整列させるマクロサンプル
順番を考えず新しいウィンドウを4つ新たに立ち上げ、左右に並べるサンプルマクロです。以下の画像のような並びになります。
サンプルマクロは以下です。
Sub test()
' Sheet1を選択
Worksheets("Sheet1").Activate
' 新しいウィンドウを4個立ち上げる
' (最初に開いているウィンドウを含めて5個のウィンドウ)
ActiveWindow.NewWindow
ActiveWindow.NewWindow
ActiveWindow.NewWindow
ActiveWindow.NewWindow
' ウィンドウを左右に並べて表示
Windows.Arrange ArrangeStyle:=xlVertical
End Sub
並び順を考慮して整列させるマクロサンプル
並び順をBook1:1→2→3→4→5の順で表示させたい場合のマクロサンプルです。
マクロサンプルは以下です。ウィンドウを立ち上げた後に、ウィンドウの重なりを上からBook1:1→2→3→4→5の順にする処理を追加しています。
Sub test()
' 新しいウィンドウを4個立ち上げる
' (最初に開いているウィンドウを含めて5個のウィンドウ)
ActiveWindow.NewWindow
ActiveWindow.NewWindow
ActiveWindow.NewWindow
ActiveWindow.NewWindow
' 立ち上げたウィンドウの重なり順を変更
Windows("Book1:5").Activate
Windows("Book1:4").Activate
Windows("Book1:3").Activate
Windows("Book1:2").Activate
Windows("Book1:1").Activate
' ウィンドウを左右に並べて表示
Windows.Arrange ArrangeStyle:=xlVertical
End Sub
さいごに
いかがだったでしょうか。ウィンドウの整列の並び順について調べてみました。並び順は上下などもありますが、それも恐らく重なりの順番で上から並べていく…というような処理になっているのではないかな?と思ったりしています。(それはまた後日調べるとして。)少しでもお役に立てていれば幸いです。それでは、また!