excel vba中 我想要复制一个区域的内容到另外一张表上,但是复制区域的列数是一个变量 ,请问该怎么写程序

比如说我现在要 从A1到 i 2(其中i是变量 ,表示列数 )选中 ,然后复制 ,然后在另外一张表中 粘帖。
如果行数是变量的话可以写sheet(1).range("A1:B" & i &).select 来解决,但是列数的话是ABCD下去的 。。。。。
我写的是SHEETS(1).RANGE(CELLS(1,1),CELLS(2,i)).SELECT
SELECTION.COPY
SHEETS(2).CELLS(1,1).SELECT
ActiveSheet.Paste
但是实际操作中会报错 ,原因是对象定义错误,请问为什么,有什么办法吗?

精简一点:
Dim i As Integer
i = 2
Range(Cells(1, 1), Cells(2, i)).Copy Sheets(2).Range("a1")
如果要打开Sheets(2)工作表,在最后加上语句:Sheets(2).Activate
用以下语句也可以:
Range("a1").Resize(2, i).Copy Sheets(2).Range("a1")
说明:
Range对象的Resize属性是用于调整指定区域的大小,并返回调整后的单元格区域。
语法:Resize(RowSize,ColumnSize)
其中RowSize参数和ColumnSize参数分别代表调整后的单元格区域的行数和列数
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-09-09
楼主, 你需要在SHEETS(2).CELLS(1,1).SELECT的前面加上下面这句
Sheets(2).Activate, 原因是你虽然选中了sheet2,但是没有告诉EXCEL你要把sheet2作为需要操作的表,它认不出你的ActiveSheet是什么.我也经常犯这种错误.
(同样地在SHEETS(1).RANGE(CELLS(1,1),CELLS(2,i)).SELECT 前也应该加Sheets(1).Activate这句.
第2个回答  2010-09-09
一句代码搞定
Sheets(1).Range(Cells(1, 1), Cells(2, i)).Copy Sheets(2).Cells(1, 1)
第3个回答  2010-09-09
试试看:
Dim i As Integer
i = 3
Sheets(1).Range(Cells(1, 1), Cells(2, i)).Select
Selection.Copy
Sheets(2).Activate
Cells(1, 1).Select
ActiveSheet.Paste
第4个回答  2010-09-09
看这段程序吧
Sub pp()
Dim i As Integer
i = 2
Worksheets(1).Activate
Range(Cells(1, 1), Cells(2, i)).Select
Selection.Copy
Worksheets(2).Activate
Range("A1").Select
ActiveSheet.Paste
End Sub
相似回答