【问题标题】:Type mismatch in VBA code expiry date checkVBA 代码到期日期检查中的类型不匹配
【发布时间】:2014-08-15 12:50:46
【问题描述】:

我正在尝试使用此 cod 来检查到期日期。我之前使用代码打开不同的文件并复制单元格,如下所示。请任何人帮助我为什么有运行时错误 13 类型不匹配。有任何想法吗 ?? 我试图把 If empty cell exit sub 但仍然一样:(

    Set wkbData = Workbooks.Open(Filename, , True)
    wkbData.Sheets("IBL").Range("H1:I100").Cells.Copy
    wkbSource.Sheets("Expiry Date").Range("A1").PasteSpecial Paste:=xlValues
    Application.CutCopyMode = False
    wkbData.Close
    Dim LRow As Integer
    Dim LResponse As Integer
    Dim LName As String
    Dim LDiff As Integer
    Dim LDays As Integer
    LRow = 2
    LDays = 31
    While LRow < 200
        If Len(Sheets("Expiry Date").Range("A" & LRow).Value) > 0 Then
            If Len(Sheets("Expiry Date").Range("A" & LRow).Value) = "" Then Exit Sub
                LDiff = DateDiff("d", Date, Sheets("Expiry Date").Range("A" & LRow).Value)
                If (LDiff > 0) And (LDiff <= LDays) Then
                    LName = Sheets("Expiry Date").Range("B" & LRow).Value
                    LResponse = MsgBox("The Juice " & LName & " will expire in " & LDiff & " days.", vbCritical, "Warning")
                End If
            End If
            LRow = LRow + 1
            Worksheets(1).Activate
    Wend
End Sub

【问题讨论】:

  • 可能是您的Len(...="" 线路。 Len() 函数返回一个 int 并且您将它与字符串进行比较。也可能是您的“到期日期”表中的错误日期。这可能会导致 DateDiff 函数失败。

标签: excel vba date type-mismatch


【解决方案1】:

我不肯定这是确切的问题,但我认为您在 DateDiff 上的语法可能不正确。我知道它应该看起来像这样: DateDiff(DateInterval.Day, Now, Sheets("Expiry Date").Range("A" & LRow).Value)

【讨论】:

    【解决方案2】:

    是的迈尔斯和卢克

    但卢克的评论是对的。我不知道为什么,但是 excel 更改了导致此问题的日期格式之一。现在可以了。

    感谢您的支持,现在它运行良好。如果日期错误更改,我将尝试查找代码..

    感谢您的帮助。

    【讨论】: