如何在Excel 2010中创建特定单元格

时间:2011-11-24 10:04:23

标签: excel excel-vba vba

大家好我将为用户提供Excel Document,其中包含以下基本信息

enter image description here

现在,如果用户离开了需要的单元格,我想提示他一条消息,说明它是excel中的必需值。

我已提到some articles

但是我无法实现我所需要的,所以任何人都可以提供帮助。另外,我想知道是否可以在Regular expression validators中应用ExcelDate 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

2 个答案:

答案 0 :(得分:3)

第1部分

该代码有一些问题

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

    虽然您可以将Regex用于第2部分,但普通数据验证应该可以正常工作,即

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

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

答案 1 :(得分:1)

回答第2部分(正则表达事物)

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