【Excel VBA】ウィンドウ枠を固定して、常に見出しを表示する方法 (FreezePanes)

データが縦横に長い大きな表をExcelで扱っていると、下にスクロールした時に見出し行が見えなくなったり、右にスクロールした時に項目列が見えなくなったりして、どのデータが何を示しているのか分かりにくくなることがあります。

Excelの「ウィンドウ枠の固定」機能を使えばこの問題は解決できますが、VBAを使えばその設定も自動化できます。この記事では、VBAでウィンドウ枠を固定し、表の操作性を向上させる基本的な方法を解説します。


目次

ウィンドウ枠固定の基本ルール

VBAでウィンドウ枠を固定する際の最も重要なルールは、**「アクティブセル(選択されているセル)を基準に固定される」**という点です。

  • アクティブセルの上にあるすべての行が固定されます。
  • アクティブセルの左にあるすべての列が固定されます。

このルールさえ覚えておけば、自由自在に固定位置をコントロールできます。例えば、

  • 先頭行だけを固定したい場合A2セルを選択します。
  • 先頭列だけを固定したい場合B1セルを選択します。
  • 先頭行と先頭列の両方を固定したい場合B2セルを選択します。

完成したVBAコード

ここでは、最もよく使われる3つのパターンのコードを紹介します。

① 先頭行(見出し行)のみを固定する

Sub FreezeTopRow()
    ' 念のため、既存のウィンドウ枠の固定を一旦解除
    ActiveWindow.FreezePanes = False
    
    ' A2セルを選択(これにより、1行目が固定される)
    Range("A2").Select
    
    ' ウィンドウ枠を固定
    ActiveWindow.FreezePanes = True
End Sub

② 先頭列のみを固定する

Sub FreezeFirstColumn()
    ' 念のため、既存のウィンドウ枠の固定を一旦解除
    ActiveWindow.FreezePanes = False

    ' B1セルを選択(これにより、A列が固定される)
    Range("B1").Select
    
    ' ウィンドウ枠を固定
    ActiveWindow.FreezePanes = True
End Sub

③ 先頭行と先頭列の両方を固定する

Sub FreezeTopRowAndFirstColumn()
    ' 念のため、既存のウィンドウ枠の固定を一旦解除
    ActiveWindow.FreezePanes = False

    ' B2セルを選択(これにより、1行目とA列が固定される)
    Range("B2").Select
    
    ' ウィンドウ枠を固定
    ActiveWindow.FreezePanes = True
End Sub

コードのポイント解説

基準セルの選択: Range("...").Select

前述のルールの通り、まずはじめに基準となるセルを選択することがすべての基本です。Range("B2").Selectのように、固定したい範囲のすぐ右下にあるセルを指定します。

固定の実行: ActiveWindow.FreezePanes = True

ActiveWindow(現在アクティブなウィンドウ)のFreezePanesプロパティをTrueに設定することで、アクティブセルを基準としたウィンドウ枠の固定が実行されます。

固定の解除: ActiveWindow.FreezePanes = False

ウィンドウ枠の固定を解除したい場合は、同じプロパティにFalseを設定します。 すでにウィンドウ枠が固定されている状態で別の固定をしようとすると、意図しない動作になることがあるため、サンプルコードのように一度解除してから、改めて固定を実行するのが安全で確実な方法です。


まとめ

VBAでウィンドウ枠を固定する手順は、非常にシンプルです。

  1. まず**ActiveWindow.FreezePanes = False**で、既存の固定をリセットする。
  2. 固定したい範囲の右下のセルを選択する (Range("B2").Selectなど)。
  3. **ActiveWindow.FreezePanes = True**を実行する。

この簡単なマクロを用意しておくだけで、誰がファイルを開いても常に見やすい表示を提供でき、ファイル自体の使いやすさを大きく向上させることができます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次