下面是一张表示给定机器的效率与日期的图片。效率不是每天都做的,而是随机的。然后重复这个效率,直到增加一个新的效率。因此,在我们的例子中,唯一的效率是在Day# 1,3,10和12上完成的。然而,您可以看到效率可能会重复,所以Day# 3和12的效率是相同的。

任务是选择那些在Day# 1,3,10 & 12上输入效率的日期,使用VBA i可以做到这一点,但是它在最后抛出了错误9?
Sub AutoEffRemove()
Dim rangeToUse As Range, cell1 As Range, i As Integer, RowCount As Integer, MyArray() As Variant
Set rangeToUse = Selection
For Each cell1 In Selection
If cell1.Value = cell1.Offset(-1, 0).Value Then
ReDim Preserve MyArray(RowCount)
MyArray(RowCount) = cell1.Row
RowCount = RowCount + 1
End If
Next cell1
For i = 0 To WorksheetFunction.Count(MyArray)
Rows(MyArray(i)).EntireRow.Delete
'MsgBox MyArray(i)
Next i
End SubMsgBox & Count(MyArray)表示代码针对所需的行
发布于 2016-06-30 20:37:52
导致此错误的原因是,您的最终For循环应该从lbound(MyArray)到ubound(MyArray),或者从0到WorksheetFunction.Count(MyArray)-1。
另外,您的最后一个循环将不会删除您希望删除的行。一旦删除了第一行(示例中的第4行),所有其他单元格都会向上移动一行,因此下一次删除(第6行)实际上将删除原来的第7行。
因此,您最好执行最后的循环从ubound(MyArray)到lbound(MyArray)步骤1。
https://stackoverflow.com/questions/38132454
复制相似问题