Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 日期和时间(如果不是空单元格)_Vba_Excel - Fatal编程技术网

Vba 日期和时间(如果不是空单元格)

Vba 日期和时间(如果不是空单元格),vba,excel,Vba,Excel,我有VBA中的代码,它在双击时按实际日期和时间填充单元格,但如果不用日期重写现有单元格,我不能再做第二步。 这是代码 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Not Intersect(Target, Range("A1:A5000")) Is Nothing Then Cancel = True Target.Formula

我有VBA中的代码,它在双击时按实际日期和时间填充单元格,但如果不用日期重写现有单元格,我不能再做第二步。 这是代码

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Intersect(Target, Range("A1:A5000")) Is Nothing Then
        Cancel = True
        Target.Formula = Date + Time
    Else
        If Not IsEmpty(ActiveCell.Value) Then
            MsgBox "You can not overwrite date!"
        End If
    End If
End Sub
如何重新激发此代码以不使用日期覆盖现有单元格? Sry为我的英语:) 问候。

也许你需要这个

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Intersect(Target, Range("A1:A5000")) Is Nothing Then
        Cancel = True
        If Not IsDate(Target) Then
            Target.Formula = Now
        Else
            MsgBox "You can not overwrite date!"
        End If
    End If
End Sub

如果单元格中有其他内容,是否立即覆盖?如果有人单击具有存在日期的单元格,我希望通过MsgBox显示错误消息-您不能覆盖日期!嗯,只是猜测,但也许你想通过引用传递
Cancel
,并在调用sub时使用它?你还使用了哪些其他预防措施来锁定手机,防止用户只键入某些内容或删除当前值?请写一个明确的问题,解释你尝试了什么。请看这个是的!谢谢:)我想把
Cancel=True
移到
Else
clause@DisplayName你为什么要这么做?如果将
Cancel=True
放在
Else
块中,如果单元格中放置的日期时间戳没有任何意义,则单元格将进入
Edit
模式。请解释一下,如果你有什么特别的理由这样做。@sktneer,这不是我的猜测:我猜双击会是一种捷径,让用户输入一个日期,并将当前日期作为默认值。好吧,也许你需要尝试该代码,如果需要调整,请告诉我。:)