Я пытаюсь создать макрос, который автоматически сохраняет мою книгу Excel, когда значение в определенной ячейке увеличивается на 1.

У меня есть код для автосохранения при каждом изменении ячейки, который я опубликую ниже;

 Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Me.Range("A2")) Is Nothing Then
        ThisWorkbook.Save
    End If
End Sub

Однако я не могу адаптировать код для макроса, чтобы он выполнялся только тогда, когда значение в ячейке увеличивается на единицу. Т.е. значение ячейки равно 10, сохранить книгу можно только тогда, когда значение ячейки равно 11 и т.д.

Спасибо.

1 ответ1

1

Попробуйте этот код и вернуться в случае каких-либо проблем. Небольшое предположение или ограничение заключается в том, что лист был обновлен хотя бы один раз из базы данных, и существующее содержимое не удаляется после этого, а просто обновляется снова и снова, когда это необходимо. В случае, если вы очищаете данные после сохранения и перед закрытием, а затем открываете чистый лист каждый раз, когда потребуется другое решение.

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, до тех пор, пока вы не разместите рабочую книгу.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .