excel - 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
我对此很陌生,如果有人可以帮我一把,那将对我有很大帮助。我整天都在做这个!!!泰
解决方案
问题是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
推荐阅读
- python - 由于 ScriptTimedOut,AWS CodeDeploy 在 AfterInstall 中失败
- javascript - 在结账页面 React.js 中不显示重复的产品
- matlab - Matlab代码充电到容量的最大值
- javascript - 如何在进度事件中使用文件阅读器显示文件上传的进度
- sockets - 尽管有请求正文,但每个连接的 http 与 Web 套接字内存使用情况
- numpy - FFT如何进行卷积?如何进行标准化?
- c# - 查看动态模块的权限项自动将“Telerik.Sitefinity.DynamicModules.Model.DynamicContent”更改为[object%20Object]
- ios - 无法在 amplify.api.query 函数中重新加载 tableview
- django - 在查询集上使用 annotate 和 distinct
- lua - (Discordia) 如何让机器人编辑自己的特定消息?