2014-12-09 3 views
2

Ok. 다음 코드는 Excel을 계속 충돌 시키지만 이유는 알 수 없습니다. 기본적으로 동일한 코드를 여러 번 사용해도 문제가 없습니다.하나의 셀이 다른 셀과 같으면 다른 셀을 복사하여 붙여 넣으십시오.

기본적으로 두 개의 다른 통합 문서에 성 및 이름이 있으며, 그 둘이 서로 같으면 하나의 통합 문서에서 다른 통합 문서로 생년월일을 복사하려고합니다.

Sub Macro4() 

Dim iRow As Integer, cRow As Integer 

iRow = 4 

Dim wbC As Workbook, wbA As Workbook, wsC As Worksheet, wsA As Worksheet 

Set wbC = Workbooks("Coventry Enroll Census 113014") 
Set wbA = Workbooks("Copy of Ameritas Enroll Census Template 1 1 15 (2).xls") 
Set wsC = wbC.Sheets(1) 
Set wsA = wbA.Sheets(2) 

Do: cRow = 2 'Reset cRow 
     'DOB 
     If wsC.Cells(cRow, 2) = wsA.Cells(iRow, 2) And wsC.Cells(cRow, 1) = wsA.Cells(iRow, 3)Then 
     wsC.Cells(cRow, 10).Select 
     Selection.Copy 
      Range(wsA.Cells(iRow, 6)).PasteSpecial (xlPasteValues) 
     iRow = iRow + 1 
     Else 
     cRow = cRow + 1 

     End If 

     Loop Until wsC.Cells(cRow, 1) = "" And wsC.Cells(cRow + 1, 1) = "" And wsC.Cells(cRow + 2, 1) = "" 
End Sub 
+0

충돌이 발생하면 어떻게됩니까? 오류가 발생 했습니까 아니면 Excel이 닫 혔습니까? 'selection.copy' 부분은 문제가 될 수 있습니다. 그 이유는 바로 Excel이 닫히는 메모리 인 – Matt

+0

을 가지고 있기 때문입니다. 나는 단지 하나의 세포이기 때문에 너무 많은 기억이 될 것이라고 생각하지 않았다. –

답변

1

각 루프가 시작될 때 cRow을 재설정하면 루프가 만들어지고 끝이없는 것 같아요. 그래서 아마 until 조건은 true가 될 것입니다. 왜냐하면 cRow는 2 또는 3입니다. 실제로 충돌을 설명 할 수는 없지만 관련이 있다고 생각합니다. 루프의 Do 전에 cRow = 2을 설정해보십시오.

+0

* doh * 알았습니다. –

+0

나는 이것을 생각하지 않고이 코드에 추가했다고 생각합니다. 그래서 다른 것들은 그 끝이없는 일을하지 않았습니다. –

+0

@TylerYoder : Sh.t happen ;-) 행운을 빈다. – Fratyx

0

값을 직접 선택하는 대신 직접 설정해보십시오. 이것이 통합 문서 및 시스템을 갖추지 않고도 문제를 해결할 수 있을지는 확실하게 말할 수는 없지만 한 번 시도해보십시오.

또한 this link about avoiding using Select statements in VBA을 확인하십시오.

Do: cRow = 2 'Reset cRow 
     'DOB 
     If wsC.Cells(cRow, 2) = wsA.Cells(iRow, 2) And wsC.Cells(cRow, 1) = wsA.Cells(iRow, 3) Then 
      wsA.Cells(iRow, 6).Value = wsC.Cells(cRow, 10).Value 'THIS SETS ONLY THE VALUE. 
      iRow = iRow + 1 
     Else 
      cRow = cRow + 1 
     End If 

     Loop Until wsC.Cells(cRow, 1) = "" And wsC.Cells(cRow + 1, 1) = "" And wsC.Cells(cRow + 2, 1) = "" 
End Sub 

SIDE 참고 : 당신은 WBC를 WBA의 파일 확장자를 포함하지 않도록하려는 있습니까? 귀하의 코드에서 :

Set wbC = Workbooks("Coventry Enroll Census 113014") 
Set wbA = Workbooks("Copy of Ameritas Enroll Census Template 1 1 15 (2).xls") 

편집 노트 : 추가 된 쪽지.

+0

Select 문에 대한 링크를 보내 주셔서 감사합니다! 나는 길 아래로 나를 위해 편리하게 올 것이라고 확신한다. –

관련 문제