ウィンドウの分割を行う方法は2つ
ウィンドウの分割を行う方法には、分割位置を指定するSplitRowプロパティとSplitColumnプロパティを使う方法と、アクティブセルを基準としたSplitプロパティを使う方法の2種類があります。
いずれの方法を使ってもいいですが、分割の解除はSplitプロパティを利用します。
SplitRow、SplitColumn
SplitRowプロパティに分割後の左上のウィンドウに何行分表示されるかの値を渡しては上下に分割し、SplitColumnプロパティに分割後の左上のウィンドウに何列分表示されるかの値を渡して左右に分割します。
開いていないウィンドウの分割は出来ません。
SplitRowプロパティ、SplitColumnプロパティは指定セル位置での分割を行うだけでなく、どのセル位置で分割されているのかを取得することも出来ます。
Split
SplitプロパティにはTrueとFalseを渡して分割と分割の解除を行うことが出来ます。
分割の基準となるセルはアクティブセルです。
この動作はExcelの表示タブ→ウィンドウグループ→分割、と同じ機能です。
アクティブセルが画面の表示領域内に無い場合は、画面の中央で上下左右均等に分割されます。
例えばB2セルがアクティブセルの場合に、アクティブセルが見えなくなるところまでスクロールしてSplitプロパティにTrueを設定しても、B2セルが見えていないため画面中央で均等に分割されます。
構文
設定
Window.SplitRow = 設定値
Window.SplitColumn = 設定値
参照
Window.SplitRow As Long
Window.SplitColumn As Long
親オブジェクト | Windowオブジェクトを指定します。
アクティブウィンドウであればActiveWindow、複数のウィンドウが開いている場合はWindows(1)などで指定します。 |
設定時 | SplitRow:分割後の上側に表示する行数を指定します。
SplitColumn:分割後の左側に表示する列数を指定します。 |
参照時 | SplitRow:表示されている一番上の行位置を返します。
SplitColumn:表示されている一番左の列位置を返します。 |
設定
Window.Split = 設定値
参照
Window.Split As Boolean
親オブジェクト | Windowオブジェクトを指定します。
アクティブウィンドウであればActiveWindow、複数のウィンドウが開いている場合はWindows(1)などで指定します。 |
設定時 | True: アクティブセルを基点に上下左右に分割します。 既に分割済みの場合で、アクティブセルを別の位置に移動してSplit = Trueを実行しても何も起こりません。False: 分割を解除します。 既に解除済みの場合もエラーにならず解除状態のままになります。 |
参照時 | ウィンドウを分割している場合はTrue、そうでない場合はFalseが返されます。 |
Windows(index)でのエラー
ウィンドウを指定する際にブックを1つしか開いていないのにWindows(5)などの存在しないウィンドウを指定した場合は、「実行時エラー’9′: インデックスが有効範囲にありません。」のエラーになります。
ウィンドウの数が分からない場合はWindows.Countで調べることが出来ます。
画面表示の外の分割
画面上に表示されているブックの最下段が40行目、最右列がZ列とします。
この場合、表示上の範囲を超える位置での分割を行った場合も、目には見えませんが分割は行われています。
確認したい場合はウィンドウのZOOMを縮小表示にすると分割していることを確認できます。
以下は50行目で分割した場合の結果ですが、ズームが100%のときには50行目が画面で見えませんが、70%になると50行目が表示され、分割されていることを確認できます。
ウィンドウ分割のサンプルコード1
SplitRowプロパティとSplitColumnプロパティを使ったサンプルです。
ウィンドウの分割を行ったあとに、分割位置を出力します
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Sub WindowSplitRCTest() Dim w As Window Dim rowCnt Dim colCnt Set w = ActiveWindow '// ウィンドウの分割 w.SplitRow = 10 '// 上側に10行で分割 w.ScrollColumn = 3 '// 左側に3列で分割 '// 分割後の位置を取得 rowCnt = w.SplitRow '// 上ウィンドウの最終行 colCnt = w.SplitColumn '// 左ウィンドウの最終列 Debug.Print rowCnt '// 10 Debug.Print colCnt '// 3 End Sub |
ウィンドウ分割のサンプルコード2
Splitプロパティを使ったサンプルです。
Falseを設定していますので分割の解除を行います。
1 2 3 |
Sub WindowSplitFalseTest() ActiveWindow.Split = False End Sub |
なお、Trueを設定するとアクティブセルを基点にウィンドウが分割されます。
以下はB3セルを選択してSplit = Trueを実行します。
1 2 3 4 |
Sub WindowSplitFalseTest() Range("B3").Select ActiveWindow.Split = True End Sub |