エクセルVBAを使ってワークシートの垂直スクロールバーを非表示にする方法
エクセル画面右端には上下に画面移動するための垂直スクロールバーが必ず表示されていますが、ユーザーフォームなどを使ってエクセル自動化させた時には、意図しないスクロールによってエラーになってしまった事ありませんか?
そこで思い切って垂直スクロールバーを非表示にして操作できないようにしましょう。
垂直スクロールバーを非表示
シート内を上下に移動できる「垂直スクロールバー」は上記画面で「⑥」の部分です。
今回はこの垂直スクロールバー自体を非表示にして、意図しないセルの移動を防ぐことができて、さらにワークシートのスペースを広げることができます。
DisplayVerticalScrollBarプロパティ
DisplayVerticalScrollBarプロパティとActiveWindowを組み合わせると、現在表示している垂直スクロールバーを表示したり非表示にしたりすることができるようになります。
- 垂直スクロールバーを非表示・・・False
- 垂直スクロールバーを表示・・・・True
では実際にここでは、ユーザーフォームに配置したコマンドボタンに垂直スクロールバーを表示・非表示にするVBAコードを書いていきましょう。
垂直スクロールバーを非表示にするには、DisplayVerticalScrollBarをFalseに指定することでできるようになります。
Private Sub CommandButton1_Click()
With ActiveWindow
.DisplayVerticalScrollBar = False
End With
End Sub
- コマンドボタン1が押されたら
- 現在表示中のワークシートを操作する
- 垂直スクロールバーの表示を非表示にする
- withステートメント終了
- マクロ終了
これで、コマンドボタン1が押されたら水平スクロールバーが非表示になります。
垂直スクロールバーを再表示
垂直スクロールバーを非表示にできたら、再表示できないと不都合なので、DisplayVerticalScrollBarをTrueに指定することでできるようになります。
Private Sub CommandButton1_Click()
With ActiveWindow
.DisplayVerticalScrollBar = True
End With
End Sub
- コマンドボタン1が押されたら
- 現在表示中のワークシートを操作する
- 垂直スクロールバーを表示する
- withステートメント終了
- マクロ終了
非表示のFalseを表示のTrueに変更するだけで完成するのとても簡単です。
この方法でも問題ないのですが、コマンドボタンを2つ用意しなくてはいけないのですが、ちょっと工夫すると1つのコマンドボタンで非表示も再表示もできるんですよ!
クリックするたびに垂直スクロールバーの表示/非表示を切り替え
なんでもかんでもできるわけではないのですが、この種の表示・非表示の切り替えには、FalseやTrueの代わりにNot演算子を使用するとできるようになります。
Private Sub CommandButton1_Click()
With ActiveWindow
.DisplayVerticalScrollBar = Not .DisplayVerticalScrollBar
End With
End Sub
- コマンドボタン1が押されたら
- 現在表示中のワークシートを操作する
- 垂直スクロールバーの表示・非表示を切り替える
- withステートメント終了
- マクロ終了
作成したエクセルは様々なスタッフが使う為に、想定外の操作をされてしまいエラーを引き起こすことがあるので、ユーザーフォーム以外の操作をできないように工夫しています。
ボタン1つで表示を切り替えたり元に戻したりできると便利なので、ほかの表示方法も知っていて損はないと思いますよ!