EXCEL VBA 表示画面のコントロール②(ウインドウの制御、最大化・最小化・スクロール表示画面のサイズ設定)
EXCEL VBA 表示画面のコントロール②(ウインドウの制御、最大化・最小化・スクロール表示画面のサイズ設定)
EXCEL等で、表などを作成した時に表をユーザーに見やすくするためEXCELの画面表示をコントロールすると思います。画面表示を最大化・標準・最小化し画面サイズを調整するには、「WindowState」を利用して表現したり、見せたい内容を縦・横スクロールさせて見やすい位置調整する「ScrollRow・Column」を利用して調整する事ができます。それでは、画面表示のコントロール機能を順番に説明いたします。
★EXCEL VBA 表示画面のコントロール①の内容は下記参照
https://akira55.com/windowzoom/
オブジェクト.WindowState = 設定値
定数(設定値) | 内容(説明) | 値 |
---|---|---|
xlMinimized | 最小化 | -4140 |
xlMaximized | 最大化 | -4137 |
xlNormal | 標準 | -4143 |
使用例①: ActiveWindow.WindowState = xlMinimized ’最小化
使用例②: ActiveWindow.WindowState = xlMaximized ‘最大化
使用例③: ActiveWindow.WindowState = xlNormal ‘標準【アクティブウインドウの大きさの取得】使用例:WinSize = ActiveWindow.WindowState
現在のウインドウサイズの取得(最大化・標準・縮小化)WindowState
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Sub Window_Maximize01() Select Case ActiveWindow.WindowState '現在のウインドウの大きさを取得 Case xlMaximized MsgBox "現在のサイズは最大化です。" Case xlNormal MsgBox "現在のサイズは標準です。" Case xlMinimized MsgBox "現在のサイズは最小化です。" End Select End Sub |
(画面クリックして拡大)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Sub Window_Maximize02() Select Case ActiveWindow.WindowState '現在のウインドウの大きさを取得 Case xlMaximized ActiveWindow.WindowState = xlNormal '最大化⇒標準へ MsgBox "最大化⇒標準へ変更" Case xlNormal ActiveWindow.WindowState = xlMinimized '標準⇒最小化 MsgBox "標準⇒最小化へ変更" Case xlMinimized ActiveWindow.WindowState = xlMaximized '最小化⇒最大化 MsgBox "最小化⇒最大化へ変更" End Select End Sub |
【EXCELの画面上、指定する位置へスクロールします】
オブジェクト.ScrollRow = 設定値 (行を指定します)
オブジェクト.ScrollColumn = 設定値(列を指定します)
使用例①: ActiveWindow.ScrollRow = 10 ’10行スクロール(縦スクロール)
使用例②: ActiveWindow.ScrollColumn = 5 ’5列スクロール(横スクロール)
EXCELの表示画面をスクロールして表示指定
1 2 3 4 5 6 7 8 |
Sub WindowScroll01() With ActiveWindow '現在のアクティヴウインドウを指定 .ScrollRow = 10 '10行分、縦にスクロールします。 .ScrollColumn = 5 '5列分、横スクロールします。 End With End Sub |
(画面クリックして拡大)
下記のサンプルプログラムは、1シートに各月の売上高表があります。入力値(月)に対して該当する売上表を左上にスクロールします。
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 28 29 30 31 32 33 34 35 |
Sub WindowScroll02() Dim Hyou_No, Inp_Row, Inp_Col As Integer Hyou_No = Application.InputBox(Prompt:="月を数値で入力", Title:="売上高を選択", Default:="", Left:=100, Top:=100, Type:=1) Select Case Hyou_No Case 1 '1月を選択 Inp_Row = 5 '5行分を代入(1月の縦位置) Inp_Col = 3 '3列分を代入(1月の横位置) Case 2 '2月を選択 Inp_Row = 10 '5行分を代入(2月の縦位置) Inp_Col = 7 '7列分を代入(2月の横位置) Case 3 '3月を選択 Inp_Row = 17 '10行分を代入(3月の縦位置) Inp_Col = 3 '5列分を代入(3月の横位置) Case 4 '4月を選択 Inp_Row = 17 '10行分を代入(4月の縦位置) Inp_Col = 7 '7列分を代入(4月の横位置) Case Else MsgBox "入力した数値に該当月がありません" Exit Sub 'プログラム終了 (1~4以外の数値を入力すると終了) End Select With ActiveWindow '現在のアクティヴウインドウを指定 .ScrollRow = Inp_Row '代入した数値分を縦スクロール .ScrollColumn = Inp_Col '代入した数値分を横スクロール End With MsgBox "選択した" & Hyou_No & "月分の売上表を左上にスクロールしました" End Sub |
(画面クリックして拡大)
ウインドウの位置やサイズの位置を指定する
オフジェクト.Top = 設定値(数値)
オフジェクト.Left = 設定値(数値)
オフジェクト.Height = 設定値(数値)
オフジェクト.Width = 設定値(数値)使用例①: ActiveWindow.Top = 50 (画面上からのサイズを50に設定)
1 2 3 4 5 6 7 8 9 10 11 12 |
Sub Window_Position01() With ActiveWindow .WindowState = xlNormal 'ウインドウのサイズを標準に設定 .Top = 40 'Top画面上からのサイズを40に設定 .Left = 50 'Left画面の左端からのサイズを50に設定 .Height = 160 'ウインドウの高さのサイズをを160に設定 .Width = 170 'ウインドウの幅のサイズを170を設定 End With End Sub |
(画面クリックして拡大)
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。