Сохранить старое значение ячейки в VBA - PullRequest
0 голосов
/ 24 мая 2018

У меня есть этот макрос, который находит фрагменты и подходит для моей программы:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim KeyCells As Range

    ' The variable KeyCells contains the cells that will
    ' cause an alert when they are changed.
    Set KeyCells = Range("N19")

    If Not Application.Intersect(KeyCells, Range(Target.Address)) _
           Is Nothing Then

        Dim vNew As Integer
        Dim vOld As Integer
        vNew = Range("N19").Value
        Application.EnableEvents = False
        Application.Undo
        vOld = Range("N19").Value
        Range("N19").Value = vNew
        Range("D159").Value = vOld
        Application.EnableEvents = True

    End If
End Sub

Мне нужно сохранить старое значение N19 в D159.

Знаете ли вы, почему этоне работает?

Спасибо

1 Ответ

0 голосов
/ 24 мая 2018

Вы должны изменить место присвоения значения на vOld.В вашем коде он был назначен на N19 после Application.Undo, таким образом, он ничего не назначен.Я пробовал это, это сработало:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim KeyCells As Range

    ' The variable KeyCells contains the cells that will
    ' cause an alert when they are changed.
    Set KeyCells = Range("N19")

    If Not Application.Intersect(KeyCells, Target) Is Nothing Then

        Dim vNew As Long
        Dim vOld As Long

        vNew = Range("N19")
        vOld = Range("N19")
        Application.EnableEvents = False
        Application.Undo
        vOld = Range("N19")
        Range("N19") = vNew
        Range("D159") = vOld

        Application.EnableEvents = True

    End If
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...