簡體   English   中英

VBA運行時錯誤1004:應用程序定義或對象定義的錯誤

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

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