CELLNETS Excel開発の専門会社

【VBA入門】ウィンドウ枠の固定をVBAで設定・解除する方法|位置がずれない4ステップ

ワークシートの一覧表で、見出し行を固定して表示している画面

営業、総務、経理など部門を限らず、「一覧表データ形式」のワークシート操作は日常的なもの。

みなさん、こんにちは。セルネッツ竹本です。

今回は、「ワークシート作業の操作性向上」をテーマに、ウィンドウ枠の固定について解説をしたいと思います。

結論から言うと、VBAでウィンドウ枠を固定するときは「いったん解除 → A1までスクロール → 固定したい位置のセルを選択 → 固定」の4ステップで書きます。
先にA1までスクロールしておかないと、利用者がスクロールした位置のまま、ずれた場所で固定されてしまうためです。

本記事では、このコードの意味と、行数・列数を指定して固定する方法、解除の方法、注意点を解説します。

一覧表の使いやすさ改善

大きな一覧表、スクロールのたびに見出しを見失っていませんか?

  • 行が多い顧客一覧や売上表で、どの列が何か分からなくなる
  • 担当者ごとに表示や絞り込みの状態がバラバラになっている
  • 入力欄を探すのに時間がかかり、入力ミスや転記漏れが出る

そのお悩み、操作性を考えた一覧表の仕組み化で解決できます。Excel専門のシステム開発会社『セルネッツ』なら、起動時のウインドウ枠固定やフィルター設定を自動化できます。入力フォームや検索ボタンを備えた使いやすい一覧表も作れます。いまの表のレイアウトを活かしたまま改善します。

\Excel専門特化 × 低価格 × スピード対応/

一覧表の使いやすさ改善を相談する

全国対応・お見積もり無料

ウィンドウ枠の固定とは?見出しを常に表示する設定

ウィンドウ枠の固定は、スクロールしても見出しの行や列が画面に残るようにするExcelの機能です。
手作業では[表示]タブ→[ウィンドウ枠の固定]で設定し、VBAではActiveWindow.FreezePanesで設定します。

両者の比較イメージ

ワークシート一覧データに対する操作ですが、カーソル位置は、ホームポジションが基本です。

[オートフィルター]を適用したり、[見出し行]、[見出し列]が、常に見えるようにしたり。

できる限り、操作性を高めるための一工夫がある親切設計を心がけましょう。オートフィルターで絞り込んだ一覧を扱うときは、絞り込み中の最終行の取り方の注意点もご覧ください。

ウィンドウ枠の固定やオートフィルターを設定した一覧表と、設定していない一覧表の比較

VBAでウィンドウ枠を固定するコード

↓ウィンドウ枠を固定にするModule

'※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
Sub M_ウインド枠の固定()
'※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

O_A.Activate

'★ウインド枠の固定                             '★(1/4)まず解除
If ActiveWindow.FreezePanes = True Then ActiveWindow.FreezePanes = False

'[ホームポジション]                                '★(2/4)Home
Application.Goto Range("A1"), True

ActiveSheet.Range("A2").Select        '★(3/4)次にセル選択
ActiveWindow.FreezePanes = True    '★(4/4)ウィンドウ枠を固定

End Sub

コードの「O_A.Activate」の「O_A」は、シートのオブジェクト名です。シート名ではなくオブジェクト名で指定する理由は、ワークシートをID(オブジェクト名)で管理する方法で解説しています。

4ステップそれぞれの意味

  1. まず解除:すでに固定されていると、別の位置で固定し直せません。最初に解除して、どの状態からでも同じ結果になるようにします。
  2. A1へスクロール(ホームポジション):Application.Gotoの2つ目の引数をTrueにすると、A1が画面の左上に来るまでスクロールします。固定は「今見えている画面」を基準にかかるため、ここが一番大切です。
  3. セルを選択:選んだセルより上の行と左の列が固定されます。A2なら1行目が固定されます。
  4. 固定:FreezePanesをTrueにして、ウィンドウ枠を固定します。

固定される位置は「選択したセルの左上」で決まる

手順3で選ぶセルを変えると、固定される範囲が変わります。

選択するセル固定される範囲
A21行目(見出し行)
B1A列(見出し列)
B21行目とA列
C41〜3行目とA〜B列

行数・列数を指定して固定する方法(SplitRow・SplitColumn)

セルを選択せずに、固定する行数と列数を数値で指定することもできます。
SplitRowは固定する行の数、SplitColumnは固定する列の数です。いずれも画面の一番上・一番左から数えるので、先にスクロール位置を1に戻します。

Sub FreezeBySplit()
    Worksheets("一覧").Activate
    ActiveWindow.FreezePanes = False
    ActiveWindow.ScrollRow = 1       '一番上までスクロール
    ActiveWindow.ScrollColumn = 1    '一番左までスクロール
    ActiveWindow.SplitRow = 1        '1行目を固定
    ActiveWindow.SplitColumn = 1     'A列を固定
    ActiveWindow.FreezePanes = True
End Sub

セルの選択位置を変えずに済むので、利用者が選んでいたセルをそのまま残したいときに便利です。

ウィンドウ枠の固定を解除する

解除はFreezePanesをFalseにするだけです。
SplitRowなどで分割していた場合は、分割の線も消すためにSplitもFalseにします。

ActiveWindow.FreezePanes = False   '固定を解除
ActiveWindow.Split = False         '分割の線も消す

ウィンドウ枠の固定の注意点

ウィンドウ枠の固定は、シートではなく「ウィンドウ」の設定である点に気をつけましょう。

  • 先にシートをアクティブにする:ActiveWindowに対する設定なので、固定したいシートを表示してから実行します。
  • スクロール位置で結果が変わる:A1までスクロールせずに固定すると、利用者が見ていた位置で固定され、上の行が見えなくなることがあります。
  • ページレイアウト表示では使えない:標準表示に切り替えてから実行します。
  • 開いたときに自動で固定する:ThisWorkbookのWorkbook_Openから呼び出すと、ブックを開くたびに同じ状態にそろえられます。書き方はThisWorkbookに書く処理の活用例で紹介しています。

「まず解除してから設定する」考え方は、ワークシートの状態をリセットしてバグを減らす方法と同じです。

【Point】利用者目線で考えると、こんな配慮があるとユーザビリティが向上します。

よくある質問

複数のシートにまとめて設定できますか?

一度に設定する方法はありません。
シートを1枚ずつアクティブにして、同じ処理を実行します。

今どこで固定されているかを調べるには?

ActiveWindow.SplitRowとActiveWindow.SplitColumnで、固定されている行数と列数を確認できます。

印刷したときも見出しを各ページに出せますか?

ウィンドウ枠の固定は画面だけの設定で、印刷には反映されません。
印刷では、ページ設定の「印刷タイトル」(VBAではPageSetup.PrintTitleRows)を使います。

まとめ|解除→A1へスクロール→選択→固定で、位置がずれない

VBAでウィンドウ枠を固定するときは、いったん解除し、A1までスクロールしてから、固定したい位置のセルを選んで固定します。
行数・列数で指定したいときはSplitRow・SplitColumn、解除はFreezePanes = Falseです。

今回のテーマは、「ワークシート作業の操作性向上」について、解説を行いました。

本記事が、Excel実務の効率化のご参考になれば幸いです。

相見積もり歓迎

一覧表の改善から簡易システム化まで、費用の目安をご案内

  • 入力フォームを備えた簡易システムは30万円〜(税別)です
  • 小さな改修は基本料金50,000円+時間単価で承ります
  • Excelに向かない規模なら、その旨を正直にお伝えします

セルネッツでは相見積もりを歓迎しています。料金は基本料金50,000円に、要件定義・設計・開発の時間単価を加えた体系です(税別)。データ量や利用人数からExcelが不向きと判断した場合は、正直にお伝えします。システム導入相談やセカンド・オピニオンも、60分無料で承ります。

\Excel専門特化 × 低価格 × スピード対応/

無料見積もり・お問い合わせはこちら

全国対応・お見積もり無料


関連記事

Excelシステム開発

Excelを複数人で共同編集する方法|オンライン共有の手順と事例

更新日:2026年11月4日

Excelシステム開発

システム開発の依頼ガイド|費用相場・流れ・会社の選び方と「作りすぎない」判断軸

更新日:2026年9月24日

Excelシステム開発

予約システムの開発依頼にかかる費用相場|小規模店舗は100万円以下で作れる

更新日:2026年9月24日

Excelシステム開発

CRMシステム開発の外注費用は?依頼先の選び方と100万円以下に抑える考え方

更新日:2026年9月24日

Excelシステム開発

勤怠管理システム開発の外注費用相場|100万円以下で作る方法とプラン別料金【2026年版】

更新日:2026年9月24日

Excelシステム開発

SFAシステム開発の依頼相場は?高額SaaSに払い続ける前に知るべき「安く作る」現実解

更新日:2026年9月24日

Excelシステム開発

業務システム開発の依頼はいくら?費用相場と「100万円以下」で頼む方法

更新日:2026年9月24日

Excelシステム開発

受発注システム開発の費用相場は?外注料金の内訳と安く抑える方法を解説

更新日:2026年9月24日

Excelシステム開発

販売管理はエクセルで十分?売上管理表・発注管理表の作り方と「限界」の乗り越え方

更新日:2026年11月4日

newsite