我正在尝试创建一个宏,每当特定单元格中的值增加 1 时,它就会自动保存我的 Excel 工作簿。
我有用于在单元格发生变化时自动保存的代码,我将在下面发布;
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("A2")) Is Nothing Then
ThisWorkbook.Save
End If
End Sub
但是,我似乎无法调整宏代码,使其仅在单元格中的值增加 1 时执行。例如,单元格值为 10,仅当单元格值为 11 时才保存工作簿,依此类推。
谢谢。
答案1
尝试此代码,如果出现任何问题,请恢复。小假设或约束是工作表至少已从数据库刷新一次,并且此后不会删除现有内容,只会在需要时再次刷新。如果您在保存后和关闭前清除数据,然后每次都打开空白工作表,则需要不同的解决方案。
ALT + F11 --> VBA 编辑器 --> ThisWorkbook --> 常规 --> 声明
Public Prev_Val As Variant
Workbook_Open() 事件
Private Sub Workbook_Open()
ThisWorkbook.Prev_Val = Sheet1.Range("A2").Value
End Sub
在 Sheet1 或任何 Sheet 代号下 - Worksheet_Change(ByVal Target As Range) 事件。用 Sheet1 或 Sheet2 等任何 Sheet 代号替换 Sheet1。
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
现在,当您打开工作簿时,公共变量 Prev_Val 会将值存储在 A2 中,随后使用它进行比较,并不断将此值更新为 A2 中的最新更新,直到您关闭工作簿。