一枚のシートにデータを入力し、別のシートでその集計結果をリアルタイムで見たい、といった場合に、Excelの「新しいウィンドウを開く」機能は非常に便利です。これにより、同じブックを2つのウィンドウで同時に表示し、それぞれで異なるシートやセル範囲を表示できます。
VBAを使えば、このウィンドウの作成と操作を自動化できます。この記事では、NewWindowメソッドを使い、新しいウィンドウを作成してオブジェクト変数に格納し、ウィンドウの整列や表示シートの切り替えまでを行う方法を解説します。
完成したVBAコード
以下が、新しいウィンドウを作成し、元のウィンドウと左右に並べて、それぞれで別のシートを表示する実用的なVBAコードです。
Sub CreateAndArrangeNewWindow()
' 変数を宣言します
Dim targetBook As Workbook
Dim newlyCreatedWindow As Window
' このマクロが書かれているブックを操作対象とする
Set targetBook = ThisWorkbook
' 念のため、ブックにシートが2枚以上あるか確認
If targetBook.Worksheets.Count < 2 Then
MsgBox "このマクロを実行するには、シートが2枚以上必要です。", vbExclamation
Exit Sub
End If
' --- 1. 新しいウィンドウを作成し、オブジェクト変数に格納 ---
' .NewWindowメソッドは、作成した新しいWindowオブジェクトを返します
Set newlyCreatedWindow = targetBook.NewWindow
' --- 2. 新しいウィンドウの情報を表示 ---
' ウィンドウのCaptionは「ブック名:2」のようになります
MsgBox "新しいウィンドウ「" & newlyCreatedWindow.Caption & "」を作成しました。"
' --- 3. 2つのウィンドウを左右に並べて表示 ---
targetBook.Windows.Arrange ArrangeStyle:=xlArrangeVertical
' --- 4. 各ウィンドウで別々のシートを表示 ---
' 元のウィンドウ(1番目)でSheet1をアクティブにする
targetBook.Windows(1).Activate
targetBook.Worksheets("Sheet1").Activate
' 新しいウィンドウ(2番目)でSheet2をアクティブにする
targetBook.Windows(2).Activate
targetBook.Worksheets("Sheet2").Activate
' 新しいウィンドウを閉じる場合は .Close を使います
' newlyCreatedWindow.Close
End Sub
コードのポイント解説
① 新しいウィンドウの作成: .NewWindow
Set newlyCreatedWindow = targetBook.NewWindow
Workbookオブジェクトの.NewWindowメソッドを実行すると、そのブックを表示する新しいウィンドウが作成されます。
重要なのは、このメソッドが作成されたWindowオブジェクトそのものを戻り値として返すことです。これをSetキーワードを使ってオブジェクト変数(newlyCreatedWindow)に格納することで、VBAからその新しいウィンドウを直接かつ確実に操作できるようになります。
② ウィンドウの整列: .Windows.Arrange
targetBook.Windows.Arrange ArrangeStyle:=xlArrangeVertical
WorkbookオブジェクトのWindowsプロパティは、そのブックに属するすべてのウィンドウの集まり(コレクション)を返します。このコレクションに対して.Arrangeメソッドを実行すると、ウィンドウを整列させることができます。
ArrangeStyle:=xlArrangeVertical: ウィンドウを左右に並べます(垂直に分割)。ArrangeStyle:=xlArrangeHorizontal: ウィンドウを上下に並べます(水平に分割)。
③ 特定のウィンドウの操作
targetBook.Windows(1).Activate
targetBook.Worksheets("Sheet1").Activate
targetBook.Windows(1)のようにインデックス番号を指定することで、特定のウィンドウを操作対象にできます。.Activateでウィンドウを最前面に表示してから、その中で表示したいシートを.Activateすることで、「1番目のウィンドウではSheet1を、2番目のウィンドウではSheet2を表示する」といった制御が可能になります。
まとめ
同じブックの別ウィンドウをVBAで操作する際の基本は、以下の通りです。
myWorkbook.NewWindowを実行して、新しいウィンドウを作成する。- 戻り値として返される**
Windowオブジェクトを変数に格納**する (Set newWin = ...)。 myWorkbook.Windowsコレクションを使って、ウィンドウ全体を整列させたり、個別のウィンドウを操作したりする。
このテクニックは、複数のシートや広範囲のデータを同時に見ながら作業するようなマクロで、ユーザーにとって分かりやすい画面表示を自動で構築したい場合に非常に役立ちます。
副業から独立まで「稼げる」Webスキルを習得する(PR)
ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。
「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。
このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。
講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。
副業に特化した強み
- 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
- AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
- 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。
受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。
受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。
