Вы можете сделать это для события Worksheet_Change
,
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 2 And Target.Column = 3 Then 'C2
If Target.Value <> "" Then
Range("C1").Value = Target.Value
End If
End If
End Sub
Формула =C2
или какой-либо вариант не сработает, поскольку не может запомнить значение, которое с тех пор было удалено.
Полагаю, вы могли бы подделать формулу , как показано ниже, но я определенно не рекомендую ее, особенно в сочетании с кодом.Я просто публикую его из интереса.
Private Sub Worksheet_Change(ByVal Target As Range)
Static old As String
If Target.Row = 2 And Target.Column = 3 Then 'C2
If Target.Value <> "" Then
Range("C1").Formula = "=IF(N(""""),"""","""")&C2"
old = Target.Value
Else
Range("C1").Formula = "=IF(N(""" & old & """),"""","""")& """ & old & """"
End If
End If
End Sub
Это бессмысленно, потому что вам все равно нужен код.
Я полагаю, что даже для кода можно просто написатьна именованный диапазон / значение, к которому затем относится формула:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Value <> "" Then
ActiveWorkbook.Names.Add Name:="stored", RefersToR1C1:="=""" & Target.Value & """"
End If
End Sub