【Excel VBA】ウィンドウが分割されているか、またそのペイン数を確認する方法

Excelの「分割」機能を使うと、一つのワークシートを2つまたは4つの領域(ペイン)に分けて、それぞれを独立してスクロールできます。広大なシートの異なる箇所を同時に見比べたい場合に非常に便利な機能です。

VBAマクロで画面操作を自動化する際、ユーザーがウィンドウを分割しているかどうかを事前に知りたい場合があります。この記事では、ActiveWindow.Panes.Countプロパティを使い、ウィンドウの分割状態を簡単に確認する方法を解説します。


目次

「ウィンドウ枠の分割」と「ウィンドウ枠の固定」の違い

はじめに、よく似た機能である「ウィンドウ枠の固定」との違いを明確にしておきましょう。

  • ウィンドウ枠の分割: 画面を2つまたは4つの独立したスクロール領域に分けます。この記事で解説するPanes.Countで確認できるのは、こちらの機能です。
  • ウィンドウ枠の固定: 特定の行や列を固定し、スクロールしても常に表示されるようにします。

今回の方法は、「ウィンドウ枠の分割」に対してのみ有効です。


完成したVBAコード

以下が、現在アクティブなウィンドウのペイン(分割された領域)の数を数え、その結果に応じてメッセージを表示するVBAコードです。

Sub CheckWindowPaneCount()

    ' 変数を宣言します
    Dim currentWindow As Window
    Dim paneCount As Long
    Dim message As String
    
    ' 現在アクティブなウィンドウを操作対象とする
    Set currentWindow = ActiveWindow
    
    ' --- 1. ウィンドウのペイン数を取得 ---
    ' PanesコレクションのCountプロパティで数を取得できます
    paneCount = currentWindow.Panes.Count
    
    ' --- 2. ペイン数に応じてメッセージを分岐 ---
    Select Case paneCount
        Case 1
            message = "このウィンドウは分割されていません。"
        Case 2
            message = "このウィンドウは2つのペインに分割されています。(縦または横)"
        Case 4
            message = "このウィンドウは4つのペインに分割されています。(縦横両方)"
        Case Else
            ' 通常、3つのペインは存在しない
            message = "予期せぬペイン数です: " & paneCount & "個"
    End Select
    
    ' --- 3. 結果を表示 ---
    MsgBox message, vbInformation, "ウィンドウの分割状態"
    
End Sub

コードのポイント解説

ActiveWindow.Panes.Count

このコードの核心は、ActiveWindow.Panes.Countという一行にあります。

  • ActiveWindow: 現在アクティブになっているExcelのウィンドウオブジェクトを指します。
  • .Panes: そのウィンドウ内にあるすべての「ペイン」の集まり(コレクション)です。
  • .Count: コレクションに含まれるアイテムの数を返します。

つまり、ActiveWindow.Panes.Countは、**「アクティブなウィンドウが、いくつのペインに分割されているか」**という数を直接返してくれます。

ペイン数の判定

.Panes.Countが返す値は、通常以下の3パターンのいずれかです。

  • 1: ウィンドウは分割されていません。
  • 2: ウィンドウが縦または横のどちらか一方に分割されています。
  • 4: ウィンドウが縦横両方に分割されています。

(Excelの標準機能では、ウィンドウを3つのペインに分割することはできません。)

サンプルコードでは、Select Case文を使って、取得したペイン数に応じた分かりやすいメッセージを表示するようにしています。


まとめ

ウィンドウの分割状態を確認するVBAのコードは非常にシンプルです。

ActiveWindow.Panes.Count

このプロパティの値を調べるだけで、ウィンドウが分割されているかどうか、また分割されている場合はそのペインの数を簡単に取得できます。ユーザーの表示環境に応じてマクロの動作を最適化したい場合などに、このテクニックをご活用ください。

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

この記事を書いた人

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

目次