PR

【Excel VBA】ウインドウ枠の固定と画面表示位置のジャンプ

Excel
記事内に広告が含まれています。

Excelでよく使う「ウインドウ枠の固定」をVBAで実装する方法をご説明いたします。
なお、ウインドウ枠の固定をするには、カーソル(画面表示位置)がシートの左上に無いと、意図した位置で固定されない場合がありますので、この注意点についても合わせて解説いたします。

スポンサーリンク

ウインドウ枠の固定方法

Excelで大きな表を扱うときによく使う「ウインドウ枠の固定」を、VBAで実装してみます。

VBAを使ったウィンドウ枠の固定は、以下の方法で実現できます。

  • 対象のシートをアクティブにしておく
  • 固定する基準のセルを選択する
  • FreezePanesプロパティを使用すると、固定位置より上の行・左の列が固定される

具体的なコーディング例は、以下の通りです。

Workbooks("郵便番号.xlsx").Sheets("Sheet1").Activate
Range("B2").Select
ActiveWindow.FreezePanes = True

ただし、この方法には注意点が2点ございますので、続けてご説明いたします。

注意点①

対象のシートに、既に「ウインドウ枠の固定」が設定された状態だと、先ほどのコードを実行しても無視されます。(元々設定されていた固定位置が、そのまま維持されます。)

そこで、以下の1文を追加して、ウインドウ枠の固定を解除しておく必要があります。
※ウインドウ枠が固定されていない状態で以下の命令を実行しても何も起きないので、無条件で以下の命令を実行しても問題ありません。

ActiveWindow.FreezePanes = False

注意点②

Excel2024では、以下の事象は解消されているようなので、考慮不要です。
そのため、Microsoft 365でも、将来的にこの考慮が不要になると思われます。

冒頭でも述べましたが、ウインドウ枠の固定をするには、画面表示位置がシート左上(A1セル)になっている必要があります。
例えば、下図のようにシート内の中途半端な位置が表示されている状態で先ほどのコードを実行しても、うまくいきません。

この場合は、以下の文を追加して、画面表示位置をシート左上(A1セル)に移動してから、ウインドウ枠を固定する必要があります。

Application.Goto Range("A1"), True

注意点を考慮したコーディング例

'対象のシートをアクティブにする
Workbooks("郵便番号.xlsx").Sheets("Sheet1").Activate

'ウインドウ枠の固定を解除
ActiveWindow.FreezePanes = False

'画面表示位置をA1セルに移動する(最新のExcelでは不要)
Application.Goto Range("A1"), True

'固定したい位置を選択する
Range("B2").Select

'ウインドウ枠の固定
ActiveWindow.FreezePanes = True

コメント

タイトルとURLをコピーしました