こんにちは、Ryoです。
Excelで表示するデータ量が増えてくると便利なのが「ウィンドウ枠」の固定ですよね。この固定や解除をVBAでもFreezaPanesプロパティを使うことで実行できます。以前の記事「行/列の非表示」サンプルコード内で例として使用していますが、今回は内容について改めて書いていこうと思います。
1.サンプル概要/サンプルコード
◆行と列の枠固定
表などの見出しを固定する際に行の部分、列の部分それぞれを枠として固定したい場合がおそらく一番多いのではないかと思います。例えば画像のような表があるとして、「月」と「品番」の部分を枠固定する場合はセルC3に対して処理を実行します。
≪実行前≫
≪実行後≫
≪サンプルコード≫
Sub Sample1() Cells(3, 3).Select ActiveWindow.FreezePanes = True End Sub
ウィンドウ枠を固定するにはFreezePanesプロパティを使用します。
オブジェクト.FreezePanes = True(枠固定化)/False(固定解除)
構文の通り、枠を固定するにはTrueで解除するにはFalseを指定します。注意する点としては、別の場所の枠を固定化する際には一旦ウィンドウ枠の固定を解除してから、改めて枠固定の処理を実行する必要があります。
ちなみに枠固定や固定解除の処理は実行する際に重複(固定状態⇒固定処理、解除状態⇒解除処理)してもエラーなどは発生しませんので、その点は使いやすいですね。
◆行のみ枠固定
Sample1では行と列の枠を固定しましたが、次は行のみ枠を固定化します。
使用するのは同じFreezaPanesプロパティですが、セルの指定はA列で固定化したい行の一つ下を選びます。
本サンプルでは「品番」や各月の見出しを固定化するので、行番号「2」を固定しますからセルA3に対して処理を実行すればOKです。
≪サンプルコード≫
Sub Sample2() Cells(3, 1).Select ActiveWindow.FreezePanes = True End Sub
◆列のみ枠固定
次は列のみの固定ですが、考え方はSample2同様で「行番号1」で枠固定したい列の一つ右を指定すればOKです。サンプルでは「品番」の列を固定化しますので、セルC1を選択して処理を実行します。
≪サンプルコード≫
Sub Sample3() Cells(1, 3).Select ActiveWindow.FreezePanes = True End Sub
2.まとめ
枠固定や解除はFreezaPanesプロパティで簡単に実行できますので、実運用上ではピックアップしたいデータをフォームなどから指定し、見出しが埋もれないように固定化して表示させるなどに使ったりしています。留意する点は一旦解除してから枠固定処理を実行しないと別の場所に変えられないということだけですので、扱いやすいと思います。
以上、ウィンドウ枠の固定を行う方法についてでした!
今回の記事が何かの参考になれば幸いです。
Ryo