2012-04-20 8 views
2

어제에 도움을 추구하십시오 VBA 매크로 만들기 새 통합 문서, 통합 문서 'B'에서VBA - 다른 통합 문서에서 행을 삭제 하시겠습니까?

  1. 통합 문서 'B'
  2. 절약에 통합 문서 'A'에서 데이터 행을 통해
  3. 복사 통합 문서 'B'를 닫기 전에 적절한 형식으로 작성하십시오.

어제의 게시물 (VBA - How to copy row in Excel from one workbook to another?)이 내 문제에 대한 확실한 해결책을 제시했습니다.

그 이후로 나는 나의 코드를 더 발전시키고 그것에 대한 새로운 요구 사항을 가지고있다. 이제 통합 문서 'A'의 셀 Ai의 값이 워크 북 'B'sheet1의 Ai 셀의 값과 일치하는지에 따라 워크 북 'B'에서 행에 복사 된 코드를 제거하는 코드 섹션이 있어야합니다. 증분되는 정수 변수). 이 코드 조각은 행에 복사 된 코드 섹션 이후에 주로 실행되며 기본 행이 새로운 정보로 업데이트 된 이후에는 왜 이렇게 뒤떨어 진 것일 수 있습니다. 나는 아래가 무엇

당신에게 내가 가지고있는 아이디어 제공해야합니다 :

... 
Do Until IsEmpty(newBk.Sheets("Bad Records").Range("A" & extFileRowCount)) 
    If newBk.Sheets("Bad Records").Range("A" & extFileRowCount) = _ 
     mainBk.Range("W" & sdRow).Value Then 
     'then delete the row and reinsert 
     '***** Stuck here. How do I remove the row? *****'  
     newBk.Sheets("Bad Records").Range _ 
      ("A" & extFileRowCount).remove '??? 
      newRowCount = newRowCount + 1 
      mainBk.Rows(sdRow).Copy newBk.Sheets _     
       ("Bad Records").Rows(newRowCount) 
     Else 
      extFileRowCount = extFileRowCount + 1 
     Loop 
... 

내가 알고리즘이 올바른 생각을하지만 난 행을 제거하는 방법에 갇혔어요. 어떤 도움이라도 대단히 감사하겠습니다.

QF

+0

아 물론. 내 잘못이야. –

+0

답변을 수락 할 의무가 없습니다. 응답은 다른 유료 사이트와 마찬가지로 SO에서 종료되지 않습니다. 질문은 항상 열려 있습니다. http://meta.stackexchange.com/questions/21258/asking-upvote-for-accepted-answer – Fionnuala

답변

1

당신은 루프에서이 줄을 왜 내가 너무 확실하지 않다

mainBk.Rows(sdRow).Copy newBk.Sheets _     
("Bad Records").Rows(newRowCount) 

하지만이 코드 (안된)

Sub Sample() 
    Dim i As Long 
    Dim Delrange As Range 

    Application.ScreenUpdating = False 

    ' 
    '~~> Rest of the code 
    ' 

    For i = extFileRowCount To 1 Step -1 
     If newBk.Sheets("Bad Records").Range("A" & extFileRowCount) = _ 
      mainBk.Range("W" & sdRow).Value Then 

      If Delrange Is Nothing Then 
       Set Delrange = newBk.Sheets("Bad Records").Rows(i) 
      Else 
       Set Delrange = Union(Delrange, newBk.Sheets("Bad Records").Rows(i)) 
      End If 
     End If 
    Next i 

    If Not Delrange Is Nothing Then Delrange.Delete 

    ' 
    '~~> Rest of the code 
    ' 

    Application.ScreenUpdating = True 
End Sub 
를 사용할 수있는 행을 삭제

HTH

+0

"mainBk.Rows (sdRow) .Copy newBk.Sheets ("잘못된 레코드 ") 이유. 행 (newRowCount) "는 어제 게시했을 때 통합 문서 'A'에서 통합 문서 'B'로 행을 복사하는 방법을 제공했기 때문입니다. 이 글에서 설명한 것처럼 행을 삭제하고 다시 삽입해야한다는 새로운 요구 사항이 있습니다 (일치 조건에 기반). 나는 당신의 테스트되지 않은 코드를 보게 될 것이고 그것을 가라. 많은 감사합니다. –

관련 문제