【发布时间】: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/Integer或Error类型,您需要一个Variant容器)。 -
是的,我知道,但我知道时间到了。但我设法解决了它,请参阅 OP 中的编辑 :)
-
干杯。您可以为自己的问题添加“答案”并将其标记为已接受:)
-
“你可以在 2 天内接受你自己的答案”,这到底是什么意思?!
-
听起来像是 meta.stackoverflow.com 的问题 :)
标签: vba date excel excel-formula