如果条件不满足,请勿保存工作表

Posted

技术标签:

【中文标题】如果条件不满足,请勿保存工作表【英文标题】:Don't save sheet if condition not met 【发布时间】:2018-12-23 16:15:36 【问题描述】:

我有一个工作簿,里面有两张名为“每日目标”和“员工目标”的工作表。

如果在“每日目标”工作表上工作,我需要允许保存工作簿的代码,无论任何条件。

如果在“员工目标”表上工作,如果条件满足则允许保存,否则不要保存。

Option Explicit

'I wrote that code within "Staff Target" sheet.

Sub NotSave()
    Dim WB As Workbook
    Set WB = Workbooks("Target Sales Tmplate")
    Dim ST As Worksheet
    Set ST = Worksheets("Staff Targets")        
    With ST
        If ST.Range("C" & Rows.Count).End(xlUp) <> Range("B4") Then
            WB.Close SaveChanges:=False
            MsgBox "Total Staff Target Amount is not equal to Total Monthly Target!", vbCritical, "ERROR"
        End If
    End With

End Sub

【问题讨论】:

【参考方案1】:

将此代码放入ThisWorkbook 模块:

Option Explicit

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    Dim staffTargets As Worksheet
    Set staffTargets = Worksheets("Staff Targets")

    With staffTargets

        If ActiveSheet.Name = .name Then

            If .Range("C" & .Rows.Count).End(xlUp) <> .Range("B4") Then
                MsgBox "Workbook Not Saved. Total Staff Target Amount is not equal to Total Monthly Target!", vbCritical, "ERROR"
                Cancel = True
            End If

        End If

    End With

End Sub

【讨论】:

@Acott Holtzman 感谢您的回答。但是我的第一个代码与您的版本完全相同。但是这段代码并不完全允许保存我的工作簿。但是当我在工作表 1 并且不关心状况时,我想保存工作簿。我想在处理员工目标表而不是每日目标表时检查条件。 @Khazar - 对不起。我忘记了那个条件。立即尝试。 @Acott Holtzman 现在代码可以正常工作了。非常感谢您的支持。

以上是关于如果条件不满足,请勿保存工作表的主要内容,如果未能解决你的问题,请参考以下文章

SQL 语句 join where 如果一个条件不满足,则执行另一个条件

如果工作簿包含数据透视表,则添加数据后无法保存 Excel 工作表

用C语言写CSV文件,如何写出多个工作表?

VBA 另存为 CSV 文件被第一张表覆盖

excel,如筛选一样满足一个条件,返回所有数据

在不保存工作簿的情况下更改 Excel 中的默认另存为位置