こんにちは、Ryoです。
データ量の多い表などを表示する際に便利なウィンドウ分割機能がExcelにありますが、VBAでも同じようにウィンドウ分割の処理を行うことができますので、今回はその内容について書いていきます。
1.サンプル概要
セルの上から5行、6列の位置に対して分割する処理を実行した結果が以下になります。
分割位置を指定して実行する場合の他にはアクティブセルの位置を基準として分割処理を行う方法もあります。
この場合はアクティブセルの左側と上側を基準にして分割されます。
以上がサンプル概要になります。
2.サンプルコード
◆位置を指定して分割
Sub Sample1() 'アクティブウィンドウに対する処理 With ActiveWindow 'ウィンドウ上側に5行表示 .SplitRow = 5 'ウィンドウ左側に6行表示 .SplitColumn = 6 End With End Sub
指定位置でウィンドウを分割するにはSplitRow/SplitColumnプロパティを利用します。
構文:オブジェクト.SplitRow/SplitColumn = expression
SplitRowプロパティはウィンドウを上下に分割、SplitColumnプロパティは左右に分割するもので、ウィンドウの上側・左側に表示する行数・列数を指定します。
ウィンドウ分割された状態から再度違う形で分割したい場合は、解除せずに処理を実行しても大丈夫です。
分割を解除したい場合はSplitRow/SplitCplumnプロパティにそれぞれ「0」を指定すればOKです。
Sub Sample2() 'ウィンドウ分割解除 '行数/列数にそれぞれ0を指定 With ActiveWindow .SplitRow = 0 .SplitColumn = 0 End With End Sub
◆アクティブセルを基準に分割
Sub Sample3() 'アクティブセルの左端/上端を基準に分割 ActiveWindow.Split = True End Sub
アクティブセルを基準にウィンドウを分割する場合はSplitプロパティを利用します。このサンプルコードを実行するとサンプル概要で載せている図のようにアクティブセルの左端と上端を基準に分割します。
ウィンドウ分割を解除する場合はSplitプロパティにFalseを指定すればOKです。
Sub Sample4() 'ウィンドウ分割の解除 ActiveWindow.Split = False End Sub
3.まとめ
似た機能でウィンドウ枠を固定するFreezePanesプロパティがありますが、こちらはウィンドウ枠の固定を再実行する際に解除する必要があります。
それに対しSplitRow/SplitColumnsプロパティは解除しなくても問題ありませんので、やや使い勝手が良いところがあります。分割する機能自体は活用できる場面も多いので、上述したプロパティを覚えておくと何かと便利ですので機会があればぜひご活用ください。
以上、ウィンドウを分割する方法についてでした!今回の記事が何かの参考になれば幸いです。
Ryo