请谁能帮用下面的代码。 它给了我在下面一行的错误:
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一月”条件格式不把它捡起来。 曾试图数据验证,但它只是限制了我一个。
我需要的宏,以确保用户不会进入指定的细胞不正确的日期。
你正在尝试在不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