首页 > 解决方案 > VBA Excel。运行时错误“1004”。应用程序定义或操作定义的错误

问题描述

我有一个大问题试图使这个脚本工作。我需要在 vba-excel 上创建一个脚本,比较两个单元格范围的两个列表,如果在第二个列表中找不到第一个列表中的值,请将其复制到第二个列表的末尾并粘贴位置附近细胞的细胞所在的细胞。但是我收到了 Run-time error '1004': Application-defined or operation-defined error。我的脚本如下:

 Dim CellA As Object
 Dim ListOLD As Range
 Dim ListNEW As Range
 Dim FinalA As Long
 Dim FinalC As Long


 FinalA = Worksheets("Sheet1").Range("K2").End(xlToRight).Column
 FinalC = Worksheets("Sheet2").Range("A9").End(xlDown).Row

  Set ListOLD = Worksheets("Sheet1").Range(Cells(11, 2), Cells(FinalA, 2))
  Set ListNEW = Worksheets("Sheet2").Range("A9:A" & FinalC)

  For Each CellA In ListNEW
 If Application.WorksheetFunction.CountIf(ListOLD, CellA) = 0 Then
  Worksheets("Sheet2").Select
  Worksheets("Sheet2").Range(CellA.Column, CellA.Row).Select
  Selection.Copy
  Worksheets("Sheet1").Range(Cells(11, 2), Cells(FinalA, 2)).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
   False, Transpose:=True
   Application.CutCopyMode = False
  End If
  Next Celda
End Sub

我对此很陌生,如果有人可以帮我一把,那将对我有很大帮助。我整天都在做这个!!!泰

标签: excelvba

解决方案


问题是Cells这里没有提到正确的工作表:

Set ListOLD = Worksheets("Sheet1").Range(Cells(11, 2), Cells(FinalA, 2))

问题在于,在上面的这种情况下,Cells(11,2)另一个的“父级”要么是ActiveSheet(如果代码在模块中),要么是代码所在的工作表。这实际上是一个相当标准的错误,在这里这里都有类似的问题。

例如它应该是这样的:

Set ListOLD = Worksheets("Sheet1").Range(Worksheets("Sheet1").Cells(11, 2), Worksheets("Sheet1").Cells(FinalA, 2))

或者它可以做得更小一点,像这样:

With Worksheets("Sheet1")
    Set ListOLD = .Range(.Cells(11, 2), .Cells(FinalA, 2))
End With

推荐阅读