【VBA】ウインドウ枠の固定・解除(モニターサイズ)

ファイルを開いた時に、ウインドウ枠の固定や解除を自動でするVBAを紹介します。

エクセルを表示するモニターにはさまざまなサイズがあります

近頃のデスクトップPCのモニターは横長のものが多いですし、昔のものを使い続けている方のモニターは正方形に近いものがほとんどでしょう。コンパクトなサイズを好まれる方もいらっしゃいますし、大きいサイズのものを好まれる方もいらっしゃいます。

デバイスの種類も、デスクトップPC・ノートPC・スマートフォンなどと、増えるばかりです。

今回は、一つのエクセルファイルを複数人で編集・閲覧する場合、編集者それぞれのモニターの大きさが異なることで問題となる「ウインドウ枠の固定」について解決しましょう。

具体的にはどんなことが問題となりますか。

エクセルファイルにおいて、モニターの大きさが異なると、一度に表示できるセル範囲が変わってきます。

確かに、大きいモニターだとたくさんのセルがいっぺんに見れるし、小さいモニターだとそれよりも少ない範囲しか画面上に表示できないですね。

大きいモニターの画面上で、より右側の列や下側の行を基準にしてウインドウ枠を固定し保存すると、次に小さいモニターでそのエクセルファイルを開いたとき、固定された部分で画面がいっぱいになってスクロールできなくなってしまいます。

小さい画面を使用している人は、ファイルを開くたびにウインドウ枠の固定を解除しないといけなくなりますね。

そうです。でも大きい画面の人はウインドウ枠の固定を使用したいですよね。その方が見やすいですから。
解決策として、モニターの大きさによってウインドウ枠の固定を設定するかどうか判断するVBAを紹介します。

目次

ブックを開いたときに実行するVBAの作成

VBAを記入するウインドウを開く

  1. マクロを作成したいエクセルブックの、Visual Basic for Applicationsを開きます(F11を押下)。
  2. 左側のVBA Projectから、Microsoft Excel Objectの中のThisWorkBookをダブルクリックし、コードを記述するウインドウを表示します。
  3. (General)のプルダウンから、「Workbook」を選択します。
  4. 3.の横の(Declarations)から「Open」を選択します。

これでこのブックを開いたときに実行するマクロを記入する準備ができました。

VBAを記入する

上記の結果で表示される

Private Sub Workbook_Open()」と「End Sub」の間にVBAを記述していきます。

Private Sub Workbook_Open()

ActiveWindow.WindowState = xlMaximized
Sheets(“●●●”).Select

ActiveSheet.Unprotect

ActiveWindow.FreezePanes = False

ActiveWindow.ScrollColumn = 1
ActiveWindow.ScrollRow = 1

If ActiveSheet.AutoFilterMode Then
    ActiveSheet.AutoFilterMode = False
End If

If ActiveWindow.VisibleRange.Columns.Count > 20 Then
    Range(“S2”).Select
    ActiveWindow.FreezePanes = True
End If

ActiveSheet.Protect

End Sub

VBAの説明

  1. ウインドウを最大化する
  2. シートを指定する
  3. (シートを保護しているのであれば)保護を解除する
  4. ウインドウ枠の固定を解除する
  5. 左端に表示されるセルをA1にする
  6. オートフィルタを解除する
  7. ウインドウに表示されているセルを確認する(T列が表示されているならば)
  8. S2セルを基準にウインドウ枠の固定をする
  9. シートを保護する(必要があれば)

補足

<VBAの説明>7.のVisibleRange.Columns.Countはウインドウに表示されている最終列を取得しています。

ウインドウに表示されている最終行を取得する場合は、VisibleRange.Rows.countへ、
ウインドウに表示されているセル範囲を取得する場合は、VisibleRange.Addressへ変更します。

ただしこれらのVBAは、ウインドウ枠の固定をしている場合、固定されている部分はカウントされません。固定外の部分だけを反映した結果を返します。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!

この記事を書いた人

子育てに奮闘しながらも、再びガッツリ走り込める日を夢見るフルタイム会社員。

コメント

コメントする

CAPTCHA


目次
閉じる