【发布时间】:2013-10-09 19:35:55
【问题描述】:
我知道这听起来很简单,但我一直在尝试各种方法,但仍然没有成功。
我有一个包含许多变量的大数据集,其中两个很有用。第一个称为“符号”(aaa、bbb、ccc 等),第二个称为“日期”(例如 2012-05-15 20:00);一个符号对应多个日期;
我想删除一些特定日期的符号(例如,bbb,2012-05-15),我有删除符号列表;
-
我试图比较数据集中的日期和 for 循环中的删除日期,如果特定符号彼此相等,则删除整行,这就是问题所在;
-
代码如下:
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 -
VBA 给了我“类型不匹配”错误。我也试过 If d1 = DateValue(Cells(j,9)) Then Rows(j).EntireRow.Delete 但这也没有用。屏幕截图在单元格中有值,当它引发错误时。
【问题讨论】:
-
您是否尝试过在您的 VBA 中放置代码中断?这将使您能够准确地看到代码认为每个值是什么。我的猜测是 DateValue(Cells(j,9) 不是有效日期,因此类型不匹配错误。
-
Cells(j,9)中有什么内容? -
@DavidZemens Cells(j,9),即 Column(9) 具有可变日期。我将删除日期与第 9 列进行比较,如果匹配,则删除整行。
-
呃。单元格中的值是什么,当它引发错误时。请添加 screesnhot,或更新您的问题。我知道你认为这是过时的,但不知道里面到底有什么,无能为力。
-
@DavidZemens 我已经更新了这个问题。代码 MsgBox (IsDate(DateValue(Cells(4, 9)))) 返回 true,我认为这意味着 Column I 的内容是日期变量,除非我理解错误。