読者です 読者をやめる 読者になる 読者になる

hiroshi akutsuの日記

主にプログラミング関係のこと

Excel vba 【特定のシートを表示したときだけオートコンプリートをonにする】

いつも邪魔くさいオートコンプリートは結構offにしている人が多いと思うけど、あるシートだけはonにしたいってケースがあったのでメモ。

オートコンプリートをonにしたいシートにWorksheet_ActivateイベントとWorksheet_Deactivateイベントを使い、Application.EnableAutoCompleteの値を切り替える。

準備として宣言セクションに元のオートコンプリートの設定値を保存する。
モジュールレベルのグローバル領域に変数acを記述し、acにシートを表示する前の設定値を保存しておき、シートが表示されなくなったらEnableAutoCompleteの設定をacに戻す。

こんな感じ。。。

Option Explicit
Private ac As Boolean

Private Sub Worksheet_Activate()
    ac = Application.EnableAutoComplete
    Application.EnableAutoComplete = True
End Sub

Private Sub Worksheet_Deactivate()
    Application.EnableAutoComplete = ac
End Sub


こうすることでサブルーチンやイベントをまたいでも変数を保持していられ、元の設定値を変えないままオートコンプリートをonにできる。