Почему мое утверждение, спрашивающее, равны ли две переменные, не работает? - PullRequest
0 голосов
/ 03 апреля 2020
Private Sub CommandButtonUndo_Click()

Dim Answer As Integer, LastRow As Variant, PreviousLastRow As Variant

LastRow = Worksheets("DATA").Range("A" & ActiveSheet.Rows.Count).End(xlUp).Row
PreviousLastRow = Names("PreviousLastRow").Value

If PreviousLastRow = LastRow Then
    MsgBox "Can only undo Once"
    Else
    If LastRow > 1 Then
        Answer = MsgBox("Are you sure you want to Undo the Previous Input?", vbYesNo + vbQuestion, "New Job")
            If Answer = vbYes Then
                Worksheets("DATA").Rows(LastRow).ClearContents
                Names("PreviousLastRow").Value = LastRow - 1
            End If   
    End If 
End If
End Sub

Идея кода заключается в том, чтобы пользователь не мог нажимать кнопку отмены более одного раза. Специфическая c часть, которая меня сбивает с толку, это If PreviousLastRow = LastRow Then, которая, кажется, просто игнорируется и всегда следует по пути else, даже когда я знаю, что два варианта одинаковы

Это связано с два числа не видны одним и тем же кодом?

1 Ответ

2 голосов
/ 03 апреля 2020

Из документации Name.Value:

Возвращает или задает значение String , которое представляет формулу, к которой относится имя.

PreviousLastRow = Names("PreviousLastRow").Value

Возвращает =10, поэтому избавьтесь от = и CLng результата:

PreviousLastRow = Names("PreviousLastRow").Value
PreviousLastRow = Replace(PreviousLastRow, "=","")
PreviousLastrow = Clng(PreviousLastRow)
...