エクセルVBAを使ってワークシートの水平スクロールバーを非表示にする方法

画面水平スクロールバー非表示VBA

エクセル画面右下には左右に画面移動するための水平スクロールバーが必ず表示されていますが、ユーザーフォームなどを使ってエクセル自動化させた時には、意図しないスクロールによってエラーになってしまった事ありませんか?

そこで思い切って水平スクロールバーを非表示にして操作できないようにしましょう。

目次

水平スクロールバーを非表示

シート内を左右に移動できる「水平スクロールバー」は上記画面で「⑤」の部分です。

今回はこの水平スクロールバー自体を非表示にして、意図しないセルの移動を防ぐことができて、さらにワークシートのスペースを広げることができます。

DisplayHorizontalScrollBarプロパティ

DisplayHorizontalScrollBarプロパティとActiveWindowを組み合わせると、現在表示している水平スクロールバーを表示したり非表示にしたりすることができるようになります。

  • 水平スクロールバーを非表示・・・False
  • 水平スクロールバーを表示・・・・True

では実際にここでは、ユーザーフォームに配置したコマンドボタンに水平スクロールバーを表示・非表示にするVBAコードを書いていきましょう。

水平スクロールバー非表示
水平スクロールバー非表示

水平スクロールバーを非表示にするには、DisplayHorizontalScrollBarをFalseに指定することでできるようになります。

水平スクロールバーを非表示にするVBA

Private Sub CommandButton1_Click()
With ActiveWindow
.DisplayHorizontalScrollBar = False
End With
End Sub

解説
  1. コマンドボタン1が押されたら
  2. 現在表示中のワークシートを操作する
  3. 水平スクロールバーの表示を非表示にする
  4. withステートメント終了
  5. マクロ終了

これで、コマンドボタン1が押されたら水平スクロールバーが非表示になります。

水平スクロールバーを再表示

水平スクロールバー表示
水平スクロールバー表示

水平スクロールバーを非表示にできたら、再表示できないと不都合なので、DisplayHorizontalScrollBarをTrueに指定することでできるようになります。

水平スクロールバーを表示するVBA

Private Sub CommandButton1_Click()
With ActiveWindow
.DisplayHorizontalScrollBar = True
End With
End Sub

解説
  1. コマンドボタン1が押されたら
  2. 現在表示中のワークシートを操作する
  3. 水平スクロールバーを表示する
  4. withステートメント終了
  5. マクロ終了

非表示のFalseを表示のTrueに変更するだけで完成するのとても簡単です。

この方法でも問題ないのですが、コマンドボタンを2つ用意しなくてはいけないのですが、ちょっと工夫すると1つのコマンドボタンで非表示も再表示もできるんですよ!

クリックするたびに水平スクロールバーの表示/非表示を切り替え

なんでもかんでもできるわけではないのですが、この種の表示・非表示の切り替えには、FalseやTrueの代わりにNot演算子を使用するとできるようになります。

水平スクロールバーの表示/非表示を切り替えVBA

Private Sub CommandButton1_Click()
With ActiveWindow
.DisplayHorizontalScrollBar = Not .DisplayHorizontalScrollBar
End With
End Sub

解説
  1. コマンドボタン1が押されたら
  2. 現在表示中のワークシートを操作する
  3. 水平スクロールバーの表示・非表示を切り替える
  4. withステートメント終了
  5. マクロ終了

作成したエクセルは様々なスタッフが使う為に、想定外の操作をされてしまいエラーを引き起こすことがあるので、ユーザーフォーム以外の操作をできないように工夫しています。

ボタン1つで表示を切り替えたり元に戻したりできると便利なので、ほかの表示方法も知っていて損はないと思いますよ!

目次