VBA 中用 使用 RANGE 将某个区域中的数据复制到另一个工作表

Sub 复制工作表内容()
Windows("复制工作表内容.xls").Activate
With Worksheets(1)
.Range(.Cells(4, 0), .Cells(UseRange.rows.count, 0)).copy ←应用程序定义或对象定义错误
End With
With Worksheets(1)
.Range(.cells(4,0)).select
ActiveSheet.Paste
End With
End Sub
【不用cells取未知,就没有问题,一旦用cells,不论参数是什么格式都不行,求指教!】
【即使取cells的address属性,依然1004错误。】

程序有几处错误:Cells的数字不能为零,最小为1;UseRange应该为UsedRange;Range括号内如果是用Cells的,需要有两个,一个为起始,另外一个为终止,如仅有一个Cells,则不用Range括起来。修改后程序如下。
希望讲清楚了,对你有帮助。o(∩_∩)o

With Worksheets(1)
.Range(.Cells(4, 1), .Cells(UsedRange.Rows.Count, 1)).Copy ' ←应用程序定义或对象定义错误
End With
With Worksheets(1)
.Cells(4, 1).Select
ActiveSheet.Paste
End With
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-25
.Range(.Cells(4, 0), .Cells(UseRange.rows.count, 0)).copy 有问题。因为CELLS(X,Y)两个参数,每个数值都必须为大于0的整数。追问

【谢谢你的回答,修改之后,提示错误为,需要对象】

本回答被提问者采纳
第2个回答  2012-06-22
.Range(.Cells(4, 0), .Cells(.UsedRange.rows.count, 0)).copy 另外我不知道你的0是什么意思,肯定不能为0,你自己改一下

.Range(.cells(4,0)).select 这里也有错,首先0得改,然后range只有两种用法:1.range("A1")这种;2.range(cells(x,y),cells(x1,y1)),你这样为什么不直接写成.cells(4,0).select?

另外为了运行速度,请在Windows("复制工作表内容.xls").Activate前面加上一句Application.Screenupdating=False,在End With后面加一句Application.Screenupdating=True
相似回答