【问题标题】:How to Make a particular Cell Required in Excel 2010如何在 Excel 2010 中设置特定单元格
【发布时间】:2015-03-26 20:39:25
【问题描述】:

大家好,我会为用户提供Excel Document 的一些基本信息,如下所示

现在,如果用户留下一个必需的单元格,我想提示他一条消息,说它是 excel 中的必需值。

我已经提到some articles

但我无法达到我的要求,所以任何人都可以提供帮助。另外我想知道是否可以在Excel 中应用Regular expression validators。像Date format 这样的东西应该是mm/dd/yyyySSN 应该是9 digited 这样......

我尝试了类似的东西,但这并没有提示我任何error or Dialog

Private Sub Worksheet_BeforeSave(Cancel As Boolean)
If Sheet1.Range("A3:B3").Value = "" Then
Application.EnableEvents = True
MsgBox "Cannot print until required cells have been completed!"
Cancel = True      
End If   
End Sub

【问题讨论】:

  • 对于您的第一个问题,您可能应该使用事件过程。对于第二个问题,您是否尝试调整 Data Validation
  • 这是两个独立的、不相关的问题,因此您应该将它们发布在两个独立的问题中。

标签: excel vba


【解决方案1】:

第 1 部分

该代码有一些问题

  1. 您需要一个Workbook 事件 - 没有 WorkSheet_BeforeSave 事件
  2. 您无法使用Sheet1.Range("A3:B3").Value = "" 测试两个空白单元格
  3. 如果代码正在运行,则事件已启用,因此 Application.EnableEvents = True 这一行是多余的

类似这样的测试,A3 和 B3 在最左边的纸上都是非空白的

{代码进入ThisWorkbook 模块}

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
  If Application.WorksheetFunction.CountA(Sheets(1).Range("a3:b3")) <> 2 Then
        MsgBox "Cannot print until required cells have been completed!"
        Cancel = True
    End If
End Sub

虽然您可以在第 2 部分中使用正则表达式,但纯数据验证应该可以正常工作,即

a) 您可以在数据验证中使用“允许”日期

b) 您可以将 100,000,000 到 999,999,999 之间的整数用于 9 位数字

【讨论】:

    【解决方案2】:

    第 2 部分的答案(正则表达式的事情)

    您可以在 VBA 中编写用户定义的函数并在 Excel 中使用它。 Here's an example 使用 RegEx 提取字符串的一部分,但稍作调整,您可以使用它进行验证。

    【讨论】:

      猜你喜欢
      • 2013-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-01
      相关资源
      最近更新 更多