【问题标题】:Excel VBA Application.Match between Long Time and Custom formatExcel VBA 应用程序。长时间和自定义格式之间的匹配
【发布时间】:2015-02-20 18:31:01
【问题描述】:

我这辈子都做不到。

我有一列时间值r,格式为“yyyy-mm-dd hh:mm:ss.000 AM/PM”(此格式是可以为单元格选择的自定义格式之一)。

我还有一个单元格c,其中包含格式为“*hh:mm:ss”(第一种时间格式)的时间值。

我现在想找出c.Value 位于r 范围内的i 的哪一行。我这样做是使用

i = Application.Match(c.Value, r, 1)

在这一行我得到“运行时错误'13':类型不匹配”,我猜这是因为r 中的单元格具有自定义格式,或者因为c.Value 中没有日期.

我怎样才能让它工作?有没有其他方法可以将c.Value 放置在r 范围内?

代码:

Sub test()
Dim r As Range
Set r = Range("A1:A10")
Dim c As Range
Set c = Range("B1")

Dim i As Integer
i = Application.Match(c.Value, r, 1) 'ERROR!

End Sub

已解决:

我不知道 Excel 将日期和时间视为数字,所以我在将 c.Value 保存为类型 Double 之前让它工作,然后在函数中使用它。

【问题讨论】:

  • 当匹配函数找到该值时,匹配将引发错误。如果您Dim i as Variant,则可以捕获此错误(因为Match 可能返回Long/IntegerError 类型,您需要一个Variant 容器)。
  • 是的,我知道,但我知道时间到了。但我设法解决了它,请参阅 OP 中的编辑 :)
  • 干杯。您可以为自己的问题添加“答案”并将其标记为已接受:)
  • “你可以在 2 天内接受你自己的答案”,这到底是什么意思?!
  • 听起来像是 meta.stackoverflow.com 的问题 :)

标签: vba date excel excel-formula


【解决方案1】:

已解决:

我不知道 Excel 将日期和时间视为数字,所以我在将 c.Value 保存为 Double 类型之前让它工作,然后在函数中使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-11
    相关资源
    最近更新 更多