トップ > 資格を活かすには > やってみよう!Excel VBAで業務改善! > 森川くんのVBA日記編: 第20話「VBAに求めるもの」2/4 :最後にもう1つ

やってみよう!Excel VBAで業務改善! 森川くんのVBA日記編|第20話 「VBAに求めるもの」

最後にもう1つ

その頃会社では、岬さんと森川くんの勉強会もクライマックスを迎えていました。

「…あら、もうこんな時間。さすがに、そろそろ帰らなきゃね。
……最後にもう1つ、便利なApplicationオブジェクトの技を教えてあげる。
Undoメソッドよ」

岬さんはカタカタと、VBEのコードウィンドウにコードを打ち込んでいきます。


Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    
    If Target.Row = 1 Then
        MsgBox "1行目のセルは編集できません"
        Application.Undo
    Else
        If InputBox("パスワードを入力してください") <> "pw" Then
            Application.Undo
        End If
    End If
    
    Application.EnableEvents = True
End Sub

「ApplicationオブジェクトのUndoメソッドは、
ユーザーが実行した操作を取り消して、元に戻してくれるの。
クイックアクセスツールバーにある、"元に戻す"ボタンと同じ働きをするのよ」

「なるほど…。
シートに変更を加えたとき、1行目のセルなら、"編集できません"のメッセージを表示して元に戻す。
それ以外の行ならダイアログボックスを表示させ、パスワードの"pw"が正しく入力されなかったとき、
元に戻すんですね」

森川くんは、岬さんの書いたコードの意味をすぐに理解します。

一覧にもどる