运行以下代码时出现错误#1004:
Sub Test()
Worksheets("Snapshot").Range(Cells(1, 1), Cells(10, 2)).Copy _
Destination:=Worksheets("Snapshot2").Range(Cells(1, 1), Cells(10, 2))
End Sub
但是当我改变这个
时Sub Test()
Worksheets("Snapshot").Range("A1:B10").Copy _
Destination:=Worksheets("Snapshot2").Range("A1:B10")
End Sub
它工作正常。
是否有使用单元格( , )
运行此代码的解决方案?或者我是否必须构建一个显示(" : ")
语句的字符串?
答案 0 :(得分:0)
第一个对我来说很好,也许试试这个 -
Sub Test()
Worksheets("Snapshot").Range(Worksheets("Snapshot").Cells(1, 1), _
Worksheets("Snapshot").Cells(10, 2)).Copy _
Destination:=Worksheets("Snapshot2").Range(Worksheets("Snapshot2").Cells(1, 1), _
Worksheets("Snapshot2").Cells(10, 2))
End Sub
答案 1 :(得分:0)
如果不合格,Cells
默认指的是当前活动工作表的单元格。您之所以收到该错误,是因为您正在查看表单"快照" (或" Snapshot2")用于不同工作表(当前活动工作表)中的单元格。
您可以完全限定Cells
,最好使用变量:
Dim sht1 As Worksheet
Dim sht2 As Worksheet
Set sht1 = Worksheets("Snapshot")
Set sht2 = Worksheets("Snapshot2")
sht1.Range(sht1.Cells(1, 1), sht1.Cells(10, 2)).Copy _
Destination:=sht2.Range(sht2.Cells(1, 1), sht2.Cells(10, 2))
或者,我更喜欢这个,请使用Resize
:
Dim rangeHeight As Long
Dim rangeWidth As Long
rangeHeight = 10
rangeWidth = 2
Worksheets("Snapshot").Cells(1, 1).Resize(rangeHeight, rangeWidth).Copy _
Destination:=Worksheets("Snapshot2").Cells(1, 1).Resize(rangeHeight, rangeWidth)