EXCELL 2007年宏观数据验证进入细胞,并显示MSGBOX如果不正确(excell 2007

2019-08-16 15:59发布

请谁能帮用下面的代码。 它给了我在下面一行的错误:

Set range = "C5:L14"

这是完整的代码:

Private Sub Worksheet_Change(ByVal Target As Excel.range)
Dim ws As Worksheet
Dim range As Worksheet

Set ws = Application.ActiveSheet
Set range = "C5:L14"

If Not Application.Intersect(Target, range("C5:L14")) Is Nothing Then

    If range("C5:L14").Value = "" Then Exit Sub

    If range("C5:L14").Date = "< today()" Then Exit Sub

    If range("C5:L14").Date = "> today()" Then MsgBox ("Future dates not allowed!")

    Else
        MsgBox ("Please enter date as follows yyyy-mm")
    End If

End Sub

日期的格式为“2013扬”的细胞。 未来的日期是不允许的,用户应只键入日期为“2013-01”。 格式应正确地改变它。 如果他们输入“2013一月”条件格式不把它捡起来。 曾试图数据验证,但它只是限制了我一个。

我需要的宏,以确保用户不会进入指定的细胞不正确的日期。

Answer 1:

你正在尝试在不VBA来解决为好。 不过,我向您展示这两种方法。 任你选

不VBA

要应用数据验证,然后按照以下步骤选择单元格。

步骤1

第2步

第3步

第4步

在行动

VBA

我评论的代码,所以你不会有理解它的任何问题

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Dim rng As Range
    Dim aCell As Range

    '~~> The below two lines are required. Read up more on
    '~~> http://stackoverflow.com/questions/13860894/ms-excel-crashes-when-vba-code-runs/13861640#13861640
    On Error GoTo Whoa
    Application.EnableEvents = False

    '~~> Set your range
    Set rng = Range("C5:L14")

    If Not Application.Intersect(Target, rng) Is Nothing Then
        '~~> Loop through all cells in the range
        For Each aCell In rng
            If aCell.Value <> "" Then
                If aCell.Value > Date Then
                    aCell.ClearContents
                    MsgBox "Future date not allowed in cell " & aCell.Address
                ElseIf IsDate(aCell.Value) = False Then
                    aCell.ClearContents
                    MsgBox "Incorrect date in cell " & aCell.Address
                Else
                    aCell.Value = Format(aCell.Value, "yyyy-mm")
                End If
            End If
        Next
    End If

Letscontinue:
    Application.EnableEvents = True
    Exit Sub
Whoa:
    MsgBox Err.Description
    Resume Letscontinue
End Sub

希望这可以帮助?

编辑

略有变化。 在非VBA方法的步骤4,我错误地输入了“YYYY毫米”。 更改为“YYYY-MM”



文章来源: excell 2007 macro validate data entered into cell and show msgbox if incorrect