2017-07-29 45 views
0

我正在尝试使用变量'r'将表1中的行复制到表2中。这个变量是另一个程序的输出。当我使用下面的代码时,出现'Application defined'错误。有人可以帮我弄这个吗。复制具有可变范围的行

Sheets("Sheet2").Range(Sheets("Sheet2").Cells(1, 2)).Value = Sheets("Sheet1").Range(Sheets("Sheet1").Cells(r, 2)).Value 
Sheets("Sheet2").Range(Sheets("Sheet2").Cells(2, 2)).Value = Sheets("Sheet1").Range(Sheets("Sheet1").Cells(r + 1, 2)).Value 
Sheets("Sheet2").Range(Sheets("Sheet2").Cells(3, 2)).Value = Sheets("Sheet1").Range(Sheets("Sheet1").Cells(r + 2, 2)).Value 
Sheets("Sheet2").Range(Sheets("Sheet2").Cells(4, 2)).Value = Sheets("Sheet1").Range(Sheets("Sheet1").Cells(r + 3, 2)).Value 

回答

2

你过于复杂,只需要使用:

Sheets("Sheet2").Cells(1, 2).value = Sheets("Sheet1").Cells(r, 2).value 
    Sheets("Sheet2").Cells(2, 2).value = Sheets("Sheet1").Cells(r + 1, 2).value 
    Sheets("Sheet2").Cells(3, 2).value = Sheets("Sheet1").Cells(r + 2, 2).value 
    Sheets("Sheet2").Cells(4, 2).value = Sheets("Sheet1").Cells(r + 3, 2).value 

错误是,你是用Range方法只有一个作为参数电池,而它需要两个单元,并返回范围的加入他们。你可以用它来进一步简化代码到一个语句:

Sheets("Sheet2").Range(Sheets("Sheet2").Cells(1, 2), Sheets("Sheet2").Cells(4, 2)).value = _ 
    Sheets("Sheet1").Range(Sheets("Sheet1").Cells(r, 2), Sheets("Sheet1").Cells(r + 3, 2)).value 

并进一步:

Sheets("Sheet2").Range("B1:B4").value = Sheets("Sheet1").Range("B" & r).Resize(4).value 
+0

明白了!感谢您的快速响应!另外,我是VBA的新手,你会介意推荐一本能帮助我涵盖基本主题的书。 – Muni0408

+0

@ Muni0408我没有特别推荐的书,但有很多。 –

+0

谢谢A.S.H ... :) – Muni0408

0

您也可以一次复制多个值到多个领域:

[Sheet1!C1:C4,Sheet1!C6:C9] = [Sheet2!B2:B5].Value 
+0

Got it!本网站新增功能... – Muni0408

+0

@ Muni0408您还可以在文档https://stackoverflow.com/documentation/excel-vba/topics中查看一些主题 – Slai