Так нужно?
[vba]Код
Dim a_
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "A1" Then Range("A2") = a_
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address(0, 0) = "A1" Then a_ = Target
End Sub
[/vba]
лучше вот так (защита от ввода сразу в несколько ячеек и от ввода с помощью Контрл Ентер)
[vba]Код
Dim a_
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then Range("A2") = a_: Range("A2").Select
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then a_ = Target
End Sub
[/vba]