Categories: VBA基礎

EXCEL VBA 表示画面のコントロール②(ウインドウの制御、最大化・最小化・スクロール表示画面のサイズ設定)

 

EXCEL VBA 表示画面のコントロール②(ウインドウの制御、最大化・最小化・スクロール表示画面のサイズ設定)

 

 

●はじめに

EXCEL等で、表などを作成した時に表をユーザーに見やすくするためEXCELの画面表示をコントロールすると思います。画面表示を最大化・標準・最小化し画面サイズを調整するには、「WindowState」を利用して表現したり、見せたい内容を縦・横スクロールさせて見やすい位置調整する「ScrollRow・Column」を利用して調整する事ができます。それでは、画面表示のコントロール機能を順番に説明いたします。

★EXCEL VBA 表示画面のコントロール①の内容は下記参照
https://akira55.com/windowzoom/

 

●書式の説明 「WindowState プロパティ」
【ウインドウを最大化/通常/最小化】
オブジェクト.WindowState = 設定値
定数(設定値)内容(説明)
xlMinimized最小化-4140
xlMaximized最大化-4137
xlNormal標準-4143
【アクティブウインドウの大きさの変更】

使用例①: ActiveWindow.WindowState = xlMinimized ’最小化
使用例②:  ActiveWindow.WindowState = xlMaximized   ‘最大化
使用例③:  ActiveWindow.WindowState = xlNormal ‘標準【アクティブウインドウの大きさの取得】使用例:WinSize = ActiveWindow.WindowState

 

 

現在のウインドウサイズの取得(最大化・標準・縮小化)WindowState

 

 

●プログラム説明(サンプルプログラム①)WindowState
下記のサンプルプログラムは、現在のEXCELブックで開いているウインドウのサイズをメッセージボックスに表示させるプログラムです。

 

 

Sub Window_Maximize01()
    
    Select Case ActiveWindow.WindowState '現在のウインドウの大きさを取得

        Case xlMaximized
                MsgBox "現在のサイズは最大化です。"
        Case xlNormal
                MsgBox "現在のサイズは標準です。"
        Case xlMinimized
                MsgBox "現在のサイズは最小化です。"
    End Select
   
End Sub

 

 

●実行前~実行後 ※プログラムの実行後、現在のウインドウの大きさを取得して該当するサイズの大きさをメッセージボックスで表示します。
(画面クリックして拡大)

 

 

●プログラム説明(サンプルプログラム②)WindowState
下記のサンプルプログラムは、現在のEXCELブックで開いているウインドウのサイズを変更するプログラムです。実行するたびに、最大化⇒標準⇒最小化⇒最大化・・と繰り返します。

 

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

 

 

●実行前~実行後 ※プログラムの実行後、現在のウインドウの大きさを取得して画面の表示サイズを「最大化⇒標準⇒最小化」の順場に実行するたびに繰り返します。

 

 

●書式の説明 「ScrollRow・ScrollColumn プロパティ」

【EXCELの画面上、指定する位置へスクロールします】

オブジェクト.ScrollRow = 設定値 (行を指定します)
オブジェクト.ScrollColumn = 設定値(列を指定します)

使用例①: ActiveWindow.ScrollRow = 10 ’10行スクロール(縦スクロール)
使用例②:  ActiveWindow.ScrollColumn = 5 ’5列スクロール(横スクロール)

 

 

EXCELの表示画面をスクロールして表示指定

 

●プログラム説明(サンプルプログラム①):ActiveWindow.ScrollRow・Column
下記のサンプルプログラムは、指定したセル位置にスクロールするプログラムです。今回指定して番号は、縦10・横5分・スクロール移動します。

 

Sub WindowScroll01()
    
    With ActiveWindow  '現在のアクティヴウインドウを指定
        .ScrollRow = 10    '10行分、縦にスクロールします。
        .ScrollColumn = 5  '5列分、横スクロールします。
    End With
    
End Sub

 

 

●実行前~実行後 ※プログラム実行後、10行分縦スクロール・5列分横スクロールしました。
(画面クリックして拡大)

 

 

 ●プログラム説明(サンプルプログラム②):ActiveWindow.ScrollRow・Column

下記のサンプルプログラムは、1シートに各月の売上高表があります。入力値(月)に対して該当する売上表を左上にスクロールします。

 

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

 

 

●実行前~実行後 ※プログラム実行後、INPUTBOXが表示されるので、左上にスクロールさせたい月を入力します。(今回は、4:=4月) 入力後、該当する月の売上表(4月)が左上にスクロールしました。
(画面クリックして拡大)

 

 

ウインドウの位置やサイズの位置を指定する

 

 

●書式の説明
【ウインドウ位置を設定】
オフジェクト.Top = 設定値(数値)
オフジェクト.Left = 設定値(数値)
オフジェクト.Height = 設定値(数値)
オフジェクト.Width = 設定値(数値)使用例①: ActiveWindow.Top = 50  (画面上からのサイズを50に設定)

 

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

 

●実行前~実行後 ※プログラム実行後、数値で指定したTop/Left/Height/Widthの設定通りに画面サイズが変更されました。
(画面クリックして拡大)

 

 

最後まで、ご覧いただきまして誠に有難うございました。
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。

 

 

AKIRA