我尝试将选定的单元格复制到另一个工作表,但总是收到错误消息:参数数目错误或属性赋值无效
这段代码检查“单元格(i,20)”是否小于或大于“单元格(i,4)”的10%。如果不是,它删除该行,如果是,它应该复制选定的单元格到另一个工作表开始48行。
也许有人可以指出,我做错了什么?下面是我的代码:
Sub CopyHighLow()
Sheets("ProductionHighLow").Select
i = 2
j = 48
produced = 0
While Cells(i, 1) <> "" Or Cells(i + 1, 1) <> ""
produced = Cells(i, 20)
ordered = Cells(i, 4)
If Cells(i, 20) > Cells(i, 4) * 0.9 And Cells(i, 20) < Cells(i, 4) * 1.1 Then
Cells(i, 22).Delete Shift:=xlUp
i = i - 1
Else
Range(Cells(i, 1), Cells(i, 2), Cells(i, 3), Cells(i, 4), Cells(i, 20)).Select
Selection.Copy Destination:=Sheets("Rytinis").Range(Cells(j, 1), Cells(j, 2), Cells(j, 3), Cells(j, 4), Cells(j, 5))
j = j + 1
End If
i = i + 1
Wend
End Sub
此处为工作修改版本:
Sub CopyHighLow()
Sheets("ProductionHighLow").Select
i = 2
j = 48
produced = 0
While Cells(i, 1) <> "" Or Cells(i + 1, 1) <> ""
produced = Cells(i, 20)
ordered = Cells(i, 4)
If Cells(i, 20) > Cells(i, 4) * 0.9 And Cells(i, 20) < Cells(i, 4) * 1.1 Then
Cells(i, 22).Delete Shift:=xlUp
i = i - 1
Else
Set RangeUnionCopy = Union(Cells(i, 1), Cells(i, 2), Cells(i, 3), Cells(i, 4), Cells(i, 20))
Set RangeUnionPaste = Union(Cells(j, 1), Cells(j, 2), Cells(j, 3), Cells(j, 4), Cells(j, 5))
RangeUnionCopy.Copy Destination:=Sheets("Rytinis").Range(RangeUnionPaste.Address)
j = j + 1
End If
i = i + 1
Wend
End Sub
3条答案
按热度按时间pxyaymoc1#
问题说明
你的问题在于这一行
Range对象不能处理两个以上的命名单元格(这种方式)。您可以直接在编译器中看到它。
更多信息请访问official documentation
接近解决方案:
在此之前我会使用Union,如下所示:
这应该对你的目标起作用。
siotufzp2#
使用Union更正了代码:
quhf5bfb3#
你得告诉它从哪张纸复制。