2016-06-10 5 views
0

다음 스크립트는 제대로 작동하는 것 같지만 아래에 표시된 줄에 "Object defined"오류가 표시됩니다. 이 문제를 일으키는 원인을 찾지 못했습니다 ...한 시트에서 다른 시트로 행을 복사

Sub MailMerge() 
Sheets.Add.Name = "MailMerge" 
Dim MailMerge As Worksheet 
Set MailMerge = Sheets("MailMerge") 
Dim Rng As Range 
Dim i, index, lastrow As Long 
Dim Abstracts As Worksheet 
Set Abstracts = Sheets("Abstracts") 

lastrow = Abstracts.Cells(Rows.Count, 1).End(xlUp).row 


For i = 1 To lastrow 
    Set Rng = Abstracts.Range("O" & i) 
     If WorksheetFunction.CountA(Rng) >= 1 Then 
      Abstracts.Range("A" & i).Resize(0, 14).Copy _ 
      Destination:=MailMerge.Range("A" & i).Resize(0, 14) 
      'this is where the error is occuring 
     End If 
Next 

End Sub 

의견이 있으십니까?

+0

붙여 넣기에'크기를 조정해야합니까? – findwindow

+0

아마도 그렇지 않습니다. 그러나 크기 조정을 제거해도 문제가 해결되지 않았습니다. – user1996971

답변

1

크기 조정은 OFFSET과 다릅니다. 그것은 지시 된 크기로 범위의 크기를 설정합니다. 그래서 범위 크기를 0 행으로 설정합니다. 1이어야합니다 :

Sub MailMerge() 
Sheets.Add.Name = "MailMerge" 
Dim MailMerge As Worksheet 
Set MailMerge = Sheets("MailMerge") 
Dim Rng As Range 
Dim i, index, lastrow As Long 
Dim Abstracts As Worksheet 
Set Abstracts = Sheets("Abstracts") 

lastrow = Abstracts.Cells(Rows.Count, 1).End(xlUp).Row 


For i = 1 To lastrow 
    Set Rng = Abstracts.Range("O" & i) 
     If WorksheetFunction.CountA(Rng) >= 1 Then 
      Abstracts.Range("A" & i).Resize(1, 14).Copy _ 
      Destination:=MailMerge.Range("A" & i).Resize(1, 14) 
      'this is where the error is occuring 
     End If 
Next 

End Sub 
+0

완벽. 이렇게하면 문제가 해결됩니다. 그런 식으로 크기 조정이 실현되지 않았습니다. 나는 항상 Resize가 현재 셀을 '포함'하는 것처럼 보였던 이유는 무엇인지 항상 궁금해했습니다. 반면 'Offset'은 현재 셀을 포함하지 않았습니다. 이제 알았어! :) – user1996971

관련 문제