【Excel】Delete時に元の関数をセット

VLOOKUP 関数等を利用している場合、スポット的に直接値を入れたいケースがあると思います。

直接入れた値の削除時にもともと設定してあったVLOOKUP関数を再セットするプログラムを作成します。

このエクセルファイルの作り方

①マクロを使えるようにする
マクロを使えるようにする」を参照

②VLOOKUP関数の参照元、先を作成

③「Alt + F8」を押して表示される以下の画面で「マクロ名」を「FunctionDisplayOnDeletion」として「作成」を押す

④ Microsoft Visual Basic for Applications」にて以下のコードを記載

Sub FunctionDisplayOnDeletion()
    Dim searchValueRow As Integer: searchValueRow = 1 '★検索値列
    Dim startFuncRow As Integer: startFuncRow = 2 '★VLOOKUP関数設定開始行
    Dim startFuncCol As Integer: startFuncCol = 2 '★VLOOKUP関数設定開始列
    Dim endFuncCol As Integer: endFuncCol = 3 '★VLOOKUP関数設定終了列
    
    Dim c As Range, i As Long
    For Each c In Selection
        If c.Row >= startFuncRow _
           And c.Column >= startFuncCol _
           And c.Column <= endFuncCol Then
            c.Value = "=IFERROR(VLOOKUP(" & Cells(c.Row, searchValueRow).Address(False, False) & ",品目情報!$A$2:$C$5," & c.Column & ",FALSE),"""")"
        Else
            c.Value = ""
        End If
    Next c
    
End Sub
Sub AutoActivateSheet_Name()
    'DeleteKeyを押すと「FunctionDisplayOnDeletion」マクロ実行
    Application.OnKey "{Delete}", "FunctionDisplayOnDeletion"
    Application.OnKey "^{Delete}", "FunctionDisplayOnDeletion"
End Sub
Sub AutoDeactivateSheet_Name()
    'DeleteKeyへの割り当て解除
    Application.OnKey "{Delete}"
    Application.OnKey "^{Delete}"
End Sub
Sub Auto_Open()
    '「見積り入力」シートがアクティブになったら「AutoActivateSheet_Name」マクロ実行
    Worksheets("見積り入力").OnSheetActivate = "AutoActivateSheet_Name"
    '「見積り入力卸」シート以外がアクティブになったら「AutoDeactivateSheet_Name」マクロ実行
    Worksheets("見積り入力").OnSheetDeactivate = "AutoDeactivateSheet_Name"
End Sub