【问题标题】:Making fields mandatory of a specific sheet on workbook save使工作簿上特定工作表的必填字段保存
【发布时间】:2015-01-05 13:42:57
【问题描述】:

我在 excel 中使用宏来使 excel 工作簿中的字段成为必填字段。但是,问题在于工作簿包含多个工作表,并且宏适用于所有工作表。

有没有办法针对工作簿中的特定工作表?

下面是我正在使用的代码:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Cells(5, 2).Value = "" Then
    MsgBox "Please fill cell B5"
    Cancel = True
End If
End Sub

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    请尝试:

    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
      For i = 1 To ThisWorkbook.Sheets.Count 
       If ThisWorkbook.Sheets(i).Name = "Name of specific sheet" Then
         If ThisWorkbook.Sheets(i).Cells(5, 2).Value = "" Then
            MsgBox "Please fill cell B5"
            Cancel = True
         End If
       End If
      Next i
    End Sub
    

    “特定工作表的名称” 是您验证 Cells(5, 2).Value = "" 的工作表名称。

    【讨论】:

    • 有效,但查看每张纸是否匹配而不是直接在所选纸上查看是过度的。
    • 谢谢 KaushalKapoor - 我很高兴它对你有所帮助,但也请考虑 GeneSkuratovsky 和 ​​@brettdj 的答案,因为它们 - 据我所知 - 更有效率,并且可能更好地解决你的问题问题 - 所以我的答案可能不值得应用为“问题的答案”,即使它是先写的(据我所知,如果你决定“应用”选择更改是可能的)。尽管如此 - 谢谢并祝你一切顺利:)
    • 感谢 T_G 的 cmets,但如果您的代码对 OP 满意,那么我很高兴这是他们的电话 :)
    【解决方案2】:
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
        Dim shX As Worksheet
        Dim rX As Range
    
        Set shX = ThisWorkbook.Worksheets("Sheet1")
        Set rX = shX.Cells(5, 2)
        If rX = "" Then
            MsgBox "Please fill cell B5"
            Cancel = True
            shX.Select
            rX.Select
        End If
    End Sub
    

    【讨论】:

    • 感谢您的回答!
    【解决方案3】:

    更直接

    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Dim ws As Worksheet
    Set ws = Sheets("Your sheet name here")
    If Len(ws.[b5]) = 0 Then
        MsgBox "Please fill cell B5 on sheet " & ws.Name, vbCritical, "File not saved"
        Cancel = True
        Application.Goto ws.[b5]
    End If
    End Sub
    

    【讨论】:

      猜你喜欢
      • 2016-02-26
      • 1970-01-01
      • 1970-01-01
      • 2019-12-05
      • 2017-03-10
      • 1970-01-01
      • 1970-01-01
      • 2018-01-25
      • 1970-01-01
      相关资源
      最近更新 更多