VLOOKUP 関数等を利用している場合、スポット的に直接値を入れたいケースがあると思います。
直接入れた値の削除時にもともと設定してあったVLOOKUP関数を再セットするプログラムを作成します。
FunctionDisplayOnDeletion.zip
1 file(s) 16.22 KB
このエクセルファイルの作り方
①マクロを使えるようにする
「マクロを使えるようにする」を参照
②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