检查我的日期是在日期数组

时间:2015-11-06 10:35:16

标签: arrays excel-vba vba excel

我搜索一个好方法来检查一个数组中是否存在一个日期。 如果一个字符串在一个数组中,我就可以知道但我无法修改cose以便将它与日期一起使用。

    Dim datatest as date
    Dim arfest As Variant
    UR = Sheets("Fest").Cells(Rows.Count, 1).End(xlUp).Row
    arfest = Sheets("Fest").Range("A2:A" & UR) 'A2=1/1/2015,A3=5/2/2015,A4=8/5/2015,.....
    datatest= 5/2/2015
    if instr(1, datatest, arfest,1) then ..

结果:错误运行时'13',类型不对应 怎么了?!?!

2 个答案:

答案 0 :(得分:1)

这里有3点:

  1. 当您将工作表单元格读入变体时,如果您未指定属性(即TextValueValue2),则默认为{{1} }。由于您无法确定日期格式,因此日期总是有点风险。我发现使用Excel的日期值(.Value更容易,因此不容易出现格式问题)。因此,最好指定Long
  2. 变量数组需要在循环中查询,即检查数组的每个元素。因此,.Value2功能无法正常工作,因为这会检查Instr
  3. 如果您决定比较日期值而不是字符串或日期本身,请使用String将日期转换为Excel值,并使用DateValue()将值转换为日期。
  4. 您可以考虑按如下方式重写代码:

    CDate

答案 1 :(得分:0)

我用循环改变了方法,如果我在数组中找到日期,我会添加一天......

For Each i In arfest 
    If datatest = i Then datatest= DateAdd("d", 1, datatest)
Next i

原谅草率的问题