1

我知道这听起来很简单,但我一直在尝试各种方法,但仍然没有成功。

  1. 我有一个包含许多变量的大数据集,其中两个是有用的。第一个称为“符号”(aaa、bbb、ccc 等),第二个称为“日期”(例如 2012-05-15 20:00);一个符号对应多个日期;

  2. 我想删除一些特定日期的符号(例如,bbb,2012-05-15),我有删除符号的列表;

  3. 我试图比较数据集中的日期和 for 循环中的删除日期,如果特定符号彼此相等,则删除整行,这就是问题所在;

  4. 代码如下:

    Dim d1 As Date
    d1 = DateSerial(2012, 5, 15) 'This is the deleting date  
    MsgBox (IsDate(d1)) 'This returns true   
    MsgBox (IsDate(DateValue(Cells(4, 9)))) 'This returns true
    
    For j = lastRow To 2 Step -1  
       If Cells(j,2).Value = "bbb" And (CDate(d1) = DateValue(Cells(j, 9))) Then Rows(j).EntireRow.Delete  
    Next
    
  5. VBA 给了我“类型不匹配”错误。我也试过 If d1 = DateValue(Cells(j,9)) Then Rows(j).EntireRow.Delete 但这也没有用。屏幕截图在单元格中具有值,当它引发错误时。

    屏幕截图的值在单元格中,当它引发错误时

4

2 回答 2

2

看起来您遇到了一个无法转换为 DateValue 的空单元格。

在即时窗口中,尝试:

?DateValue("")你会得到同样的错误。

您只需要稍微扩展您的逻辑:

For j = lastRow To 2 Step -1  
   If Cells(j,2).Value = "bbb" And Not Cells(j,9) = vbNullString And IsDate(Cells(j,9) Then
      If (CDate(d1) = DateValue(Cells(j, 9))) Then Rows(j).EntireRow.Delete  
   End If
Next
于 2013-10-09T20:40:36.513 回答
0

我实际上尝试过这个并且它有效。我唯一改变的是我将实际日期放入日期列 I 列(其他评论者指出这可能是您的问题),并且我将 lastrow 设为一个数字。

只需确保您在第一列中有日期,最后一行是一个数字,您不应该收到该错误

于 2013-10-09T20:18:20.023 回答