ショートカットメニューでウインドウを左右に並べて表示する方法
ブック内の複数シートを別ウインドウで並べて表示し、比較や参照したり、コピーや貼付けをしたいときがあります。
表示タブで新しいウインドウを開き、整列で左右に並べて表示で表示できますが、右クリックメニューの中にウインドウの切り替えメニューを追加して、すばやく切り替えができるようにします。
右クリックメニュー(ショートカット)の作成方法
まずは、右クリックメニューに「ウインドウを開く」と「ウインドウを閉じる」コマンドを作成します。
詳しくは右クリックメニューにマクロ実行コマンドを追加するをご覧ください。
右クリックメニュー追加のコード
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【ニューウィンドウ】メソッド
ウィンドウのコピーを開くには、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【プライベイトサブ】プロシージャーで記述してください。
実行結果
以上で、ショートカットメニューでウインドウを左右に並べて表示する方法についての解説を終了します。
ありがとうございました。