EXCEL VBA 表示画面のコントロール③(ウインドウのコピーを同期、並べて表示・表示画面サイズを取得・設定)
EXCEL VBA 表示画面のコントロール③(ウインドウのコピーを同期、並べて表示・表示画面のサイズを取得・表示画面サイズを設定)
今回説明するのは、表示画面のコントール③(ブックの整列・ウインドウのコピーを同期、EXCELブックを並べて表示、EXCEL画面のサイズ取得やEXCEL表示画面のサイズを設定する方法を説明いたします。EXCELでデータを入力したり、データをチェックする際には、この機能を使う事で効率よくデータチェックなどを行う事が出来ます。それでは、サンプルプログラムを交えて順番に説明いたします。
●【EXCEL VBA 表示画面のコントロール①(アクティブウィンドウの参照、表示画面の拡大縮小:ActiveWindow/Zoom)については、下記を参照して下さい】
EXCEL VBA 表示画面のコントロール①(アクティブウィンドウの参照、表示画面の拡大縮小:ActiveWindow/Zoom)
●【EXCEL VBA 表示画面のコントロール②(ウインドウの制御、最大化・最小化・スクロール表示画面のサイズ設定)については、下記を参照して下さい】
● NewWindowメゾットを利用するには、下記の通りに設定を行います。
オブジェクト.NewWindow
【使用例】
★ファイル名又はウィンドウ名を指定します。
① Windows(“Book1.xlsx”).NewWindow
② Windows(“Book1”).NewWindow
【注意点】
・開いていないWindowオフジェクトやWorkBookオブジェクトを指定するとエラーが発生します。
EXCEL VBA ウインドウのコピーを開く(上下に表示・左右に表示)コピーした画面を縦方向・横方向に同期します。
下記のサンプルプログラムは、EXCELウインドウのコピーを開いて、コピーを上下又は左右に表示して、コピーした画面は、指定した方向に同期する事の出来るサンプルプログラムです。同じEXCELブックでデータを参照しながらデータを入力する際は、とても便利だと思います。
【下記のサンプルプログラムについて】
① 【WindowCopy00】は、コピーされるウインドウは、上下に表示されます。スクロール同期は、縦方向に同期します。
② 【WindowCopy01】は、コピーされるウインドウは、左右に表示されます。スクロール同期は、横方向に同期します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
' ' Sub WindowCopy00() 'NewWinddows ウインドウのコピーを開く(上下に表示) ActiveWindow.NewWindow 'アクティブウィンドウのコピーを開きます。 Windows.Arrange ArrangeStyle:=xlArrangeStyleHorizontal, _ ActiveWorkbook:=True, _ Syncvertical:=True '縦方向にスクロール同期します。 End Sub ' ' ' Sub WindowCopy01() 'NewWinddows ウインドウのコピーを開く(左右に表示) ActiveWindow.NewWindow 'アクティブウィンドウのコピーを開きます。 Windows.Arrange ArrangeStyle:=xlArrangeStyleVertical, _ ActiveWorkbook:=True, _ SyncHorizontal:=True '横方向にスクロール同期します。 End Sub ' |
(画面クリックして拡大)
EXCEL VBA エクセルウインドウのサイズを取得する。
● UsableWidthプロパティ・UsableHeightプロパティを利用するには、下記の通りに設定を行います。
・オブジェクト.UsableWidth ・・・幅のサイズを取得・設定
・オブジェクト.UsableHeight ・・・高さのサイズを取得・設定
【使用例】
Dim Ans_Width as Double
With Windows(“ウィンドウサイズ.xlsm”) ‘★ファイル名又はウィンドウ名を指定します。
Ans_Width = Application.UsableWidth ‘幅のサイズを取得します。
End With
【注意点】
・サイズを取得する変数は、Doubleを指定します。(小数点付きの数値を格納するため)
下記のサンプルプログラムは、EXCELのウインドウサイズを取得するサンプルプログラムです。実際にウィンドウのサイズを取得するには、幅は、UsableWidthプロパティを利用します。高さについては、UsableHeightプロパティを利用します。取得するサイズを格納するために、必ず変数は小数点が格納できるDoubleを指定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
' ' Sub UsableWith00() 'EXCELのウィンドウサイズを取得する。 Dim EXC_Width, EXC_Height As Double With Windows("ウインドウサイズ.xlsm") 'サイズを変更するウィンドウ名を指定します。 EXC_Width = Application.UsableWidth '幅のサイズを取得します。 EXC_Height = Application.UsableHeight '縦のサイズを取得します。 End With MsgBox "幅:" & EXC_Width & " × 高:" & EXC_Height '取得した幅・高さのサイズをメッセージボックスで表示します。 End Sub ' |
(画面クリックして拡大)
EXCEL VBA エクセルウィンドウのサイズを指定する・ウインドウサイズを変更する。
下記のサンプルプログラムは、EXCELのウインドウサイズ(大きさ・変更)を設定するサンプルプログラムです。実際に指定する数値を指定して設定する方法もありますが、下記のプログラムでは、現在表示しているサイズに対して①幅のサイズを約1/3に変更する方法と②縦のサイズを約1/2にする方法を説明いたします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
' ' Sub UsableWith02() 'EXCELのウインドサイズの横幅元の1/3にする。 With Windows("ウインドウサイズ") 'サイズを変更するウィンドウ名を指定します。 .WindowState = xlNormal '表示サイズを標準サイズに指定します。 .Width = Application.UsableWidth / 3 '幅のサイズを1/3にする。 .Top = 0 'ウィンドウのd表示位置を上から0ポイント .Left = 0 'ウィンドウの表示位置を左から0ポイント End With End Sub ' ' ' Sub UsableWith03() 'EXCELのウィンドウサイズの縦幅元の1/2にする。 With Windows("ウインドウサイズ") 'サイズを変更するウィンドウ名を指定します。 .WindowState = xlNormal '表示サイズを標準サイズに指定します。 .Height = (Application.UsableHeight / 2) + 150 '縦のサイズを1/2にする .Top = 0 'ウィンドウのd表示位置を上から0ポイント .Left = 0 'ウィンドウの表示位置を左から0ポイント End With End Sub ' |
下記の実行結果は、上記プログラムの【UsableWith02】を実行しています。
(画面クリックして拡大)
EXCEL VBA エクセルのウィンドウの上下に表示・左右に表示・重ねて表示(ブックの整列・ウインドウを整列する)
● Arrangeメゾットを利用するには、下記の通りに設定を行います。
・オブジェクト.Arrange(ArrangeStyle,ActiveBook,SyncHorizontal,SyncVertical)
設定項目 必須・オプション データ型 説明
ArrangeStyle 省略可能 XlArrangeStyle ウィンドウの並べ替え方法を XlArrangeStyle クラスの定数のいずれかで指定する。(下表参照)※省略は場合は並べて表示が設定されます。
ActiveWorkbook 省略可能 Variant ActiveWindowを整列する場合はTrueに設定。開いているウインドウの全てを整列する場合は、Falseを設定します。省略は、Falseが設定されます。
SyncHorizontal 省略可能 Variant 整列したウインドウの横スクロールを同期させる時は、Trueにします。省略は、Falseが設定され何もしません。
SyncVertical 省略可能 Variant 整列したウインドウの縦スクロールを同期させる時は、Trueにします。省略は、Falseが設定され何もしません。
定数 | 内容(説明) |
---|---|
xlArrangeStyleTiled | 並べて表示 |
xlArrangeStyleHorizontal | 上下に並べて表示 |
xlArrangeStyleVertical | 左右に並べて表示 |
xlArrangeStyleCascade | 重ねて表示 |
【使用例】
Application.Windows.Arrange ArrangeStyle:=xlArrangeStyleHorizontal
●ウインドウ・ブックを並べて表示する(上下に表示)
【注意点】
●ウインドウ・ブックを整列するには、最小化表示にしていると整列されませんので、事前に標準表示か最大化表示にする必要があります。
● Arrangeメゾットについては、下記を参照して下さい】:参考(Microsoft社 様)
https://docs.microsoft.com/ja-jp/office/vba/api/excel.windows.arrange
下記のサンプルプログラムは、EXCELのウインドウを並べて表示するArrangeメゾットの使用方法を説明いたします。下記のプログラムでは、3種類の並べて表示する方法を説明いたします。
① ウインドウ・ブックを上下に並べて表示
② ウインドウ・ブックを左右に並べて表示
③ ウインドウ・ブックを重ねて表示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
' ' Sub WindowsArrange01() 'ウィンドウを並べて表示する。 (上下に並べて表示) Application.Windows.Arrange ArrangeStyle:=xlArrangeStyleHorizontal End Sub ' ' ' Sub WindowsArrange02() 'ウィンドウを並べて表示する。 (左右に並べて表示) Application.Windows.Arrange ArrangeStyle:=xlArrangeStyleVertical End Sub ' ' ' ' Sub WindowsArrange03() 'ウィンドウを並べて表示する。 (重ねて表示) Application.Windows.Arrange ArrangeStyle:=xlArrangeStyleCascade End Sub ' |
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。