こんにちは、Ryoです。
アクティブウィンドウ自体のサイズはWindowオブジェクトのWidth/Heightプロパティ、アプリケーションウィンドウ内で使用できるサイズ(幅と高さ)はUsableHeight/Usablewidthプロパティでそれぞれ求めることができますので、今回はその内容について書いていきます。
1.サンプル概要
先ずウィンドウを標準サイズとしてサイズを取得し表示します。
次にウィンドウサイズを最大化してサイズを取得、合わせて表示されているアプリケーションウィンドウサイズサイズを取得して表示します。
ウィンドウサイズは言葉通りで外寸を指しますが、使用可能領域は下図を指しています。
以上がサンプル概要になります。
2.サンプルコード
Sub Sample1() 'ウィンドウサイズを標準化しサイズを表示 Application.WindowState = xlNormal MsgBox "標準ウィンドウ幅サイズ: " _ & ActiveWindow.Width & vbCrLf & _ "標準ウィンドウ高さサイズ: " & ActiveWindow.Height 'ウィンドウサイズを最大化 '最大化したウィンドウのサイズと '使用可能な領域サイズを取得して表示 Application.WindowState = xlMaximized MsgBox "最大ウィンドウ幅サイズ: " _ & ActiveWindow.Width & vbCrLf _ & "最大ウィンドウ高さサイズ: " _ & ActiveWindow.Height & vbCrLf & vbCrLf _ & "ウィンドウの使用可能領域(幅): " _ & Application.UsableWidth & vbCrLf _ & "ウィンドウの使用可能領域(高さ): " _ & Application.UsableHeight End Sub
このようにアプリケーションウィンドウ領域内で使用可能なサイズをポイント単位で取得するにはUsableHeight/UsableWidthプロパティを利用します。
構文:オブジェクト.UsableHeight/UsableWidth
ウインドウ自体のサイズを求めるにはWindowオブジェクトのWidthプロパティとHeightプロパティを利用します。
構文:オブジェクト.Width/Height = expression
サンプルではApplication.WindowStateで標準サイズ(xlNormal)、最大サイズ(xlMaximized)を指定した際のサイズ取得とメッセージ表示を行っています。
ウィンドウ自体のサイズはActiveWindow.Width/Heightで求めますが、使用可能領域を求める場合はApplicatioon.UsableWidth/Heightのように「指定オブジェクト」が異なりますので、その点にご注意ください。
3.まとめ
ウィンドウサイズの取得や使用可能領域の取得自体は特に難しいこともありませんので、知っておくと何かと便利です。
Excel2010まではウィンドウサイズの固定もできたのですが、2013以降は無効となっているので処理上サイズを取得したいケースもそこそこありますから、何か機会があればご活用くださいませ。
以上、ウィンドウの最大サイズ/使用可能領域(サイズ)を取得する方法についてでした!今回の記事が何かの参考になれば幸いです。
Ryo