Excel VBA 比较两个单元格的日期时出错

标签 excel runtime-error vba

在我的工作表中,B:C 列允许日期。我正在尝试创建一个检查,以查看 C 中输入的日期是否比 B 更新,如果很好,则警告用户并清除内容。 我的代码在 application.intersect 行中返回运行时错误 91:

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim Dates As Range
    Set Dates = Range("C4:C12")

    If Target.Cells.Count > 1 Or IsEmpty(Target) Then
    Exit Sub
    End If
    If Not Application.Intersect(Dates, Range(Target.Address)).Value > ActiveCell.Offset(0, -1).Value Then
    GoTo DatesMissMatch
    Else
        Exit Sub
    End If

DatesMissMatch:
    Target.ClearContents
    ActiveCell.Value = "A2"
    MsgBox "Please re-check dates"
End Sub

最佳答案

我改变了你的方法,但这似乎有效。

我还注意到您将 A2 写入 ActiveCell 而不是 Target。您是否希望 C 列中的单元格在输入无效数据时更新,或者您是否希望它成为您移动到的任何单元格发生更改的位置?

无论如何,这是我想出的一个方法

Private Sub Worksheet_Change(ByVal Target As Range)

        If Target.Cells.Count > 1 Or IsEmpty(Target) Then
                Exit Sub
        End If

        If Target.Column = 3 Then 'Check to see if column C was modified
                If Target.Value < Target.Offset(0, -1).Value Then
                        Target.ClearContents
                        Target.Value = "A2"
                        MsgBox "Please re-check dates"
                End If
        End If

End Sub

如果您想坚持当前的做法,那么我认为您需要检查交集是否不为空,正如另一个答案的结论。

关于Excel VBA 比较两个单元格的日期时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32124511/

相关文章:

sql - 从管道分隔的文本文件中提取列并使用 powershell 输出

excel - VBA 将文件复制为不同的文件扩展名

C++ isMember 函数崩溃

Android:运行时错误 'Unable to create directory',使用类 DownloadManager,方法 setDestinationInExternalPublicDir

VBA Double as String,带逗号而不是点

vba - 延迟 VBA 代码操作而不卡住 Excel

javascript - 先进的 xlsx 电子表格格式

vba - 是否可以在运行时修改 Excel VBA 引用(在运行时加载加载项之后)?

excel - vba代码中的多个工作表对象错误

VBA for Excel 2010/2013 - 如何识别系统区域设置