Попробуйте этот код и вернуться в случае каких-либо проблем. Небольшое предположение или ограничение заключается в том, что лист был обновлен хотя бы один раз из базы данных, и существующее содержимое не удаляется после этого, а просто обновляется снова и снова, когда это необходимо. В случае, если вы очищаете данные после сохранения и перед закрытием, а затем открываете чистый лист каждый раз, когда потребуется другое решение.
ALT + F11 -> VBA Editor -> ThisWorkbook -> General -> Объявления
Public Prev_Val As Variant
Событие Workbook_Open()
Private Sub Workbook_Open()
ThisWorkbook.Prev_Val = Sheet1.Range("A2").Value
End Sub
Под Sheet1 или каким-либо другим вашим событием - Кодовое имя листа - Worksheet_Change(ByVal Target As Range). Замените Sheet1 на любое кодовое имя Sheet1, Sheet1 или Sheet2 или около того.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("A2")) Is Nothing Then
If Sheet1.Range("A2").Value = ThisWorkbook.Prev_Val + 1 Then
ThisWorkbook.Save
End If
ThisWorkbook.Prev_Val = Sheet1.Range("A2").Value
End If
End Sub
Теперь, когда вы открываете рабочую книгу, переменная Public Prev_Val сохраняет значение в A2 и впоследствии использует его для сравнения и продолжает обновлять это значение до того, которое является последним обновлением в A2, до тех пор, пока вы не разместите рабочую книгу.