我正在输入数据,但在“采购订单日期”单元格中错误地输入了“采购订单编号”。

这导致下一行出现溢出错误。

If Target.Column > 1 And Target <> "" Then

Target.Column的评估结果达到了预期的2,所以我很确定它在Target <>“”上失败了。

目标单元格设置为日期格式,然后在其中键入了“ 4502554236”(该结果不能得出正确的日期)。 现在看一下工作表,我看到该单元格充满###########。

我确定该单元格不为空,但我想还需要检查该单元格中的数据是否不是错误?

这样做的正确方法是什么?

谢谢

===============>>#1 票数:0

如果您确定Target只是一个单元格,则可以随时使用以下方法进行检查:

..........If Target.Text <> "" ...................

===============>>#2 票数:0 已采纳

如果需要测试单元格中的错误,则可以使用IsError()函数。 在您的情况下,这不是问题,也不是导致下一行溢出的原因。 不能在单元格中表示为日期的值不是错误 (对于该单元格格式而言只是无效的)-Excel只是将其显示为字符串“#”。 您可以通过插入以下行来验证这一点,该行将报告“ False”:

Debug.Print IsError(Target)

问题是您依赖于Target作为Date ,因此就是您需要测试的内容。 方便地,您可以使用IsDate函数进行测试。 尝试用以下内容替换您的If语句:

`If Target.Column > 1 And IsDate(Target) Then`

此后的代码也有几个问题(来自注释):

If Target > "1899-12-30" And Target < "1900-02-01" Then _ 
   Target = CDate(Year(Date) & "-" & Month(Date) & "-" & _
   Format(Day(Target + 1), "00"))

首先,您要在比较中混合使用StringDate类型,这可能是灾难的秘诀,因为您实际上是在进行字符串比较,而不是日期比较。 这完全取决于日期的格式。 考虑以下代码行:

Debug.Print DateSerial(2000, 1, 1) > "1899-12-30"

在我的区域设置中,它的评估结果为False,因为它基本上是在测试这个...

Debug.Print "1/1/2000" > "1899-12-30"

...而'/'恰好是“小于”“ 8”。

请注意,由于1899-12-30是VBA的生效日期,因此您可以将其替换为简单的> 0 使用DateSerial构建要测试的日期更加安全,容易并且可读性强。 请注意,您还可以通过一次调用Format来简化格式化日期字符串的构建:

Format$(Date + 1, "yyyy-mm-dd")

但是,如果您已经在单元格格式中使用了该格式(通过字符串比较的工作证明),则可以让Excel为您进行格式设置并将日期直接设置为该单元格。 结合所有这些,您将获得如下内容:

If Target.Column > 1 And IsDate(Target) Then
    If Target > 0 And Target < DateSerial(1900, 2, 1) Then
        Target = Date + 1
    End If
End If

  ask by Shodan translate from so

未解决问题?本站智能推荐:

1回复

VBA Excel溢出错误

有人可以解释此代码中的错误吗? 我收到溢出错误。 首先,我认为这可能是由于n1和n2的大输入值所给定的(阶次10000),即使将它们的值减小到几百后,我还是得到了这个错误。
1回复

Excel VBA:溢出错误

刚刚开始在VBA编程,我有一个问题,我不知道如何解决这个问题。 我觉得一切都好。 当我想运行此宏时,显示运行时错误'6'溢出。 谁能告诉我哪里弄错了? 我会很感激。
1回复

VBA Excel-溢出错误6-未知类型

我发现了一个有趣的错误。 我必须使用为第三方程序制作的表格。 有些电池看起来已损坏。 它们用#符号填充。 Excel在编辑栏窗口中显示负数,并且它们应该是日期。 在VBA中,我看不到任何内容。 一个简单的语句:Range(“ cell adress”)。value导致溢出错误6。
1回复

VBA溢出错误,类型为double,Excel

我不太清楚溢出错误,因此我很茫然。 在VBA中编写代码时,我正在调用VBA函数,该函数是dll(我无法访问其内部函数)中C ++函数的包装。 VBA / C ++函数返回一个双精度型。 它是使用数值方法的衍生评估。 昨天有一段时间(但现在可能已经消失了),当我尝试将函数返回给声明
2回复

Excel VBA宏给我一个溢出错误6

我有一个宏,可以根据其边界组合某个范围内的单元格。 直到我意识到它没有考虑到文本的属性(特别是粗体字体),它才能正常工作。 我将第二部分添加到宏中,由于某种原因,我溢出了。 这是宏: 我认为溢出错误来自“ r.Characters(开始:= i-2 * k * Len(strD),
2回复

excel VBA溢出错误,当它不应该

我收到此vba操作的溢出错误。 当我在具有功能的单元格中运行它时,我得到127,512,000 这可能是什么错误? 这应该远低于此数据类型的大小限制吧?
2回复

VBA:溢出错误

我有一个错误,我不明白为什么 我有一个我没有碰过的功能(没有错误),现在它不起作用了...我的功能刚好在线 我尝试了函数CDbl()并使用double类型变量 我收到溢出错误 号码= 1341.0937961001 NbDecimal = 2 我需要帮助
1回复

单元格溢出行值

错误发生在 使用上面的代码,当单元格的行值大于32,768时,我遇到问题,如何使它允许使用Long而不是Integer 我不确定如何定义此单元格以允许它引用大于整数的行。 还可以选择其他解决方案!
1回复

设置Range.Value时Excel VBA“溢出”错误

我有一个宏,该宏在打开Excel工作簿时运行,并且基本上从名为“当日”的选项卡中获取数据,并将其移至“上一交易日”,然后从另一工作簿中获取数据并将其粘贴到当日(实际上使用范围.value不能复制/粘贴)。 经过几天的测试,一切正常。 但是,现在它在代码的Range.Value部分上引发了溢出
4回复

选择所有单元格时,Selection.Count溢出

在Excel 2007中,我想在单击单元格(L2)时提示消息。 我有一段代码可以工作,但问题是,当我用Ctrl+A选择工作表中的所有单元格时,我得到错误号06: overflow行上的06: overflow If Selection.Count = 1 Then 强制性VBA代码: