簡體   English   中英

VBA:下標超出范圍錯誤

[英]VBA: Subscript out of range error

我仍然是VBA的新手,並且繼續使下標超出范圍錯誤。 我正在嘗試編寫從一個excel選項卡(“ip”)讀取數據的代碼,並將一些數據寫入另一個選項卡(“rtf”)。 當ip選項卡有變量ipIPCMP的重復值時,我想在第二個選項卡rtf中的活動行下面添加一個新行。 該錯誤發生在條件語句的else部分。 謝謝。

更新:將else更改為elseif並更改了with語句。 仍然有下標超出范圍。

For i = 1 To n   

connectIPCMP = iPCMP(i)

    For j = 1 To m

    ipIPCMP = Sheets("ip").Cells(j + 1, 2)

        If ipIPCMP = connectIPCMP And k = 1 Then

            supplierList = Sheets("ip").Cells(j, 3)

            Sheets("rft").Cells(3 + j, 4) = list
            k = k + 1

         ElseIf ipointIPCMP = connectIPCMP And k > 1 Then

             With Worksheets("rtf")

                .Range(.Cells(3 + i, 1), .Cells(3 + i, 8)).Activate
                .ActiveCell.Offset(1).EntireRow.Insert

             End With

            Sheets("rft").Cells(3 + j, 4) = supplierList

            k = k + 1

        End If
    Next

下一個

  1. 更改Else:ElseIf並添加Then到行尾。
  2. 正確參考范圍。

     With Worksheets("rtf") .Range(.Cells(3 + i, 1), .Cells(3 + i, 8)).Activate ActiveCell.Offset(1).EntireRow.Insert End with 

注意.Cells而不是Cells 看到這個

更好的方法

    For i = 1 To n
        connectIPCMP = iPCMP(i)
        With Worksheets("rtf")   '<~~CHECK THIS WORKSHEET NAME!!!!!
            For j = 1 To m
                ipIPCMP = Worksheets("ip").Cells(j + 1, 2)
                If ipIPCMP = connectIPCMP And k = 1 Then
                    supplierList = Sheets("ip").Cells(j, 3)
                    .Cells(3 + j, 4) = List
                    k = k + 1
                ElseIf ipointIPCMP = connectIPCMP And k > 1 Then
                    .Cells(3 + i, 1).Offset(1).EntireRow.Insert  '<~~only need a single cell if you are going to insert an entire row
                    .Cells(3 + j, 4) = supplierList
                    k = k + 1
                End If
            Next j
        End With
    Next i

您提供的代碼示例只講述了故事的一半,但上面是我能提供的最好的,而沒有看到完整的故事。


¹ 請參閱如何避免在Excel VBA宏中使用選擇以獲取更多方法, 以避免依賴選擇和激活來實現目標。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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