Excel VBA ショートカットメニューでウィンドウを左右に並べて表示する 

スポンサーリンク

ショートカットメニューでウインドウを左右に並べて表示する方法

ブック内の複数シートを別ウインドウで並べて表示し、比較や参照したり、コピーや貼付けをしたいときがあります。

表示タブで新しいウインドウを開き、整列で左右に並べて表示で表示できますが、右クリックメニューの中にウインドウの切り替えメニューを追加して、すばやく切り替えができるようにします。

右クリックメニュー(ショートカット)の作成方法

まずは、右クリックメニューに「ウインドウを開く」と「ウインドウを閉じる」コマンドを作成します。
詳しくは右クリックメニューにマクロ実行コマンドを追加するをご覧ください。

右クリックメニュー追加のコード

Sub コマンド追加()
  With CommandBars("cell").Controls.Add(Before:=1, Type:=msoControlPopup)
      .Caption = "ウインドウ"
  With .Controls.Add
       .Caption = "ウインドウ開く"
       .OnAction = "wopen"
 End With
 End With
End Sub

実行結果


※注意点としてコマンドメニューの追加は、他のブックにも反映されます。

追加したコマンドメニューを削除するコード

Sub コマンド削除()
  CommandBars("cell").Controls("ウインドウ").Delete
End Sub

いつでもメニューが削除できるように、同じ標準モジュール内にメニュー削除のコードも記述してください。


ウィンドウを左右に並べて表示する方法

ブック内の複数のシートを並べて表示するには、Window【ウィンドウ】オブジェクトのNewWindow【ニューウィンドウ】メソッドを使用して、オブジェクトに指定したブックのWindow【ウィンドウ】のコピーを開きます。Window【ウィンドウ】オブジェクトのArrange【アレンジ】メソッドを使用して開いたWindow【ウィンドウ】のコピーの整列方法を設定します。

メソッド内容
NewWindow【ニューウィンドウ】指定したウィンドウのコピーを開きます。
Arrange【アレンジ】開いたウィンドウのコピーの整列方法を設定します。

NewWindow【ニューウィンドウ】メソッド

ウィンドウのコピーを開くには、Window【ウィンドウ】オブジェクトまたは、Workbook【ワークブック】オブジェクトのNewWindow【ニューウィンドウ】メソッドを使用します。

NewWindow【ニューウィンドウ】メソッドの書式と設定値の説明

オブジェクト.NewWindow

  • オブジェクト(必須)
    Window【ウィンドウ】オブジェクトまたは、Workbook【ワークブック】オブジェクトを指定します。開いていないオブジェクトを指定するとエラーになります。

Arrange【アレンジ】メソッド

開かれているすべてのウィンドウを並べ替えるには、Window【ウィンドウ】オブジェクトのArrange【アレンジ】メソッドを使用します。

Arrange【アレンジ】メソッドの書式と設定値(引数)の説明

[]内は省略可能です。
オブジェクト.Arrange[(ArrangeStyle, ActiveWorkbook, SyncHorizontal, SyncVertical)]

  • オブジェクト(必須)
    Windows【ウィンドウズ】コレクションを指定します。
  • ArrangeStyle【アレンジスタイル】(省略可)
    ウィンドウの並べ替え方法を XlArrangeStyle 列挙型の定数で指定します。

    XlArrangeStyle 列挙型
    定数内容
    xlArrangeStyleTiled
    【エックスエルアレンジスタイルタイレッド】
    開かれているウィンドウがすべて画面に
    表示されるようにサイズを縮小して並べます。
    xlArrangeStyleHorizontal
    【エックスエルアレンジスタイルホリゾンタル】
    ウィンドウを同じサイズに縮小して
    上下に並べて表示します。
    xlArrangeStyleVertical
    【エックスエルアレンジスタイルバーティカル】
    ウィンドウを同じサイズに縮小して
    左右に並べて表示します。
    xlArrangeStyleCascade
    【エックスエルアレンジスタイルカスケード】
    開いているウィンドウのサイズが調整され
    タイトル バーが見えるように少しずつずらして
    重ねて表示されます。
  • ActiveWorkbook【アクティブワークブック】(省略可)
    整列する対象のウィンドウをブール型の値で指定します。省略した場合は、開いているすべてのウィンドウを整列します。

    設定値内容
    Trueアクティブウインドウとそのウィンドウのコピーを整列します。
    False開いているすべてのウィンドウを整列します。(既定値)
  • SyncHorizontal【シンクホリゾンタル】(省略可)
    整列したウィンドウの横スクロールを同期させるかをブール型の値で指定します。引数ActiveWorkbookがTrueの場合、つまり、アクティブウインドウとそのウィンドウのコピーを整列の場合のみ有効の引数です。省略した場合は同期しません。

    設定値内容
    True整列したウィンドウの横スクロールを同期します。
    False整列したウィンドウの横スクロールを同期しません。(既定値)
  • SyncVertical【シンクバーティカル】(省略可)
    整列したウィンドウの縦スクロールを同期させるかをブール型の値で指定します。引数ActiveWorkbookがTrueの場合、つまり、アクティブウインドウとそのウィンドウのコピーを整列の場合のみ有効の引数です。省略した場合は同期しません。

    設定値内容
    True整列したウィンドウの縦スクロールを同期します。
    False整列したウィンドウの縦スクロールを同期しません。(既定値)

ワークシートを左右同時に表示するコード

Private Sub wopen()
 ActiveWindow.NewWindow
  Windows.Arrange Arrangestyle:=xlArrangeStyleVertical, ActiveWorkbook:=True
End Sub

コマンド追加のコードと同じ標準モジュールにPrivate Sub【プライベイトサブ】プロシージャーで記述してください。

実行結果


以上で、ショートカットメニューでウインドウを左右に並べて表示する方法についての解説を終了します。
ありがとうございました。

スポンサーリンク

関連記事・広告