如题,
我想通过工作表的修改来触发保存功能,但是我不想保存的太频繁,希望加一个判断,
就是上一次Workbook_SheetChange与这一次Workbook_SheetChange作一个时间对比,满足时间差在15秒的时候才执行保存动作。SheetChange

解决方案 »

  1.   

    Dim t1 As Date
    Private Sub Workbook_Open()
    t1 = Now()
    End SubPrivate Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
     Dim t As Date
    t = Now()
    s = DateDiff("s", t1, t)
    If s > 15 Then
    MsgBox ">" & s
    t1 = t
    Else
    MsgBox s
    End If
    End Sub
      

  2.   

    我发个我最终结果
    Public t1 As Date
    Public t As DatePrivate Sub Workbook_BeforeClose(Cancel As Boolean)
        ActiveWindow.DisplayWorkbookTabs = True    '显示工作表标签
        'ActiveWindow.DisplayWorkbookTabs = False    '不显示工作表标签
        ThisWorkbook.Save
    End SubPrivate Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
        ThisWorkbook.Sheets(1).Cells(1, 10) = t
    End SubPrivate Sub Workbook_Open()
        t1 = Now()
        Application.ScreenUpdating = False
        Application.DisplayAlerts = False
        'ActiveWindow.DisplayWorkbookTabs = True    '显示工作表标签
        ActiveWindow.DisplayWorkbookTabs = False    '不显示工作表标签
        Application.OnTime TimeValue("11:44:59"), "Sheet1.Msg1"      '设置时间提醒吃中饭,哈
        Application.OnTime TimeValue("16:25:59"), "Sheet1.Msg2"      '设置时间下班准备
        Application.OnTime Now, "Thisworkbook.SheetSave"
        Application.DisplayAlerts = True
        Application.ScreenUpdating = True
    End SubPrivate Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
        t = Now()
        s = DateDiff("s", t1, t)
        If s > 15 Then
            ThisWorkbook.Save
        Else
            t1 = t
        End If
    End SubSub SheetSave()
        If Cells(1, 10) <> t Then
            ThisWorkbook.Save
        End If
        Call SaveTimer
    End SubSub SaveTimer()
        Application.OnTime Now() + TimeValue("00:04:00"), "Thisworkbook.SheetSave" '4分钟检查一次
    End Sub