簡體   English   中英

在Excel中使用數組時出現VBA運行時錯誤9

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM