[英]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
下一個
Else:
到ElseIf
並添加Then
到行尾。 正確參考范圍。
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.