[英]VBA Runtime Error 9 while using Array in Excel
下图显示了效率与给定机器日期的关系。 效率不是每天都做,而是随机安排。 然后重复此效率,直到添加新的效率为止。 因此,在我们的案例中,第1、3、10和12天的效率是唯一的。但是,您可以看到效率可能会重复,因此第3、12天的效率是相同的.. 我们不能使用命令Remove Dublicates
任务是选择在第1、3、10和12天输入效率的日期,使用VBA可以做到这一点,但是最后会引发错误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 Sub
MsgBox和Count(MyArray)确实表示代码针对所需的行
引起该错误的原因是,您最终的For循环的范围应从lbound(MyArray)到ubound(MyArray),或者从0到WorksheetFunction.Count(MyArray)-1。
同样,您的最终循环将不会删除您希望删除的行。 删除第一行(示例中的第4行)后,所有其他单元格都将上移一行,因此(第6行)的下一个删除实际上将删除最初的第7行。
因此,最好执行从ubound(MyArray)到lbound(MyArray)步骤-1的最终循环。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.