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