[英]Excel VBA: 'excel vba run-time error 1004' application-defined or object-defined error
[英]VBA Run-time error 1004: Application-defined or object-defined error
我剛剛熟悉VBA和我的代碼
xxLastrow = xLastRow+1
For x = 11 To xLastRow
For y = 12 To xxLastrow
If ActiveSheet.Cells(x, 2).Value = Cells(y, 2).Value Then
For z = 4 To xLastColumn
If ActiveSheet.Cells(y, z).Value <> "" Then '(possible If Not IsEmpty(Cells(y, z).Value))
ActiveSheet.Cells(y, z).Select
Selection.Copy
ActiveSheet.Cells(x, z).Select
ActiveSheet.Paste
End If
Next z
End If
Next y
Next x
導致運行時錯誤1004:當“ If ActiveSheet.Cells(y,z).Value <>“” Then“行消失時,應用程序定義或對象定義的錯誤。 所有變量都是整數(包括lastrow / column)。 這是什么問題 我向願意幫助的人保證貓之海:)
我認為評論比答案更難,但是由於代碼在評論中看起來很丑,我以為我會發布答案。
您可以使用更高效的代碼來實現相同的結果,下面的代碼使用value = value而不是復制粘貼,以避免使用剪貼板(這本身是一個緩慢的錯誤過程)。 它也不會循環每個單列,從而減少循環次數(行匹配數*列數),這可能很多。
Dim rngTest As Range
Dim rngCur As Range
Dim rngCOff As Range
Set rngTest = Range("B11:B" & xLastRow)
For Each rngCur In rngTest
Set rngCOff = rngCur.Offset(1)
If rngCur.Value = rngCOff.Value Then
rngCOff.Offset(, 2).Resize(, xLastColumn - 4).Value = rngCur.Offset(, 2).Resize(, xLastColumn - 4).Value
End If
Next rngCur
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.