首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Excel中使用Array时VBA运行时错误9

在Excel中使用Array时VBA运行时错误9
EN

Stack Overflow用户
提问于 2016-06-30 20:14:40
回答 1查看 86关注 0票数 0

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

任务是选择那些在Day# 1,3,10 & 12上输入效率的日期,使用VBA i可以做到这一点,但是它在最后抛出了错误9?

代码语言:javascript
复制
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)表示代码针对所需的行

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-30 20:37:52

导致此错误的原因是,您的最终For循环应该从lbound(MyArray)到ubound(MyArray),或者从0到WorksheetFunction.Count(MyArray)-1。

另外,您的最后一个循环将不会删除您希望删除的行。一旦删除了第一行(示例中的第4行),所有其他单元格都会向上移动一行,因此下一次删除(第6行)实际上将删除原来的第7行。

因此,您最好执行最后的循环从ubound(MyArray)到lbound(MyArray)步骤1。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38132454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档