2016-07-25 3 views
0

Excel의 테이블에서 중복을 제거하려고하는데 문제없이 중복을 제거하는 코드 조각이 있습니다. 메시지 상자를 표시 할 수 있는지 궁금합니다. "이 항목은 중복 된 항목입니다"라는 말을 따라 중복 된 것이 발견되면 어떤 제안입니까? 이것은 내가 지금까지 무엇을 가지고 있습니다 :Excel vba 중복이 발견 된 경우 메시지를 표시하는 MsgBox

Sub AccessTransfer() 
    Range("A1:F1").Select 
    Selection.Copy 
    Sheets("Sheet2").Select 

    ActiveSheet.Paste 
    ActiveCell.Offset(0, 6).Value = "Oven" 

    Range("A65536").End(xlUp).Offset(1, 0).Select 
    Call GoDupe 
    Sheets("Sheet1").Select 

    Application.CutCopyMode = False 

End Sub 



Sub GoDupe() 

    Cells.RemoveDuplicates Columns:=Array(1), Header:=xlNo 
    Range("A65536").End(xlUp).Offset(1, 0).Select 
End Sub 
+3

합니다. 당신이 가지고있는 것만을 사용하면 실제로 어떤 속이며 유일한 것인지를 식별 할 수있는 방법이 없습니다. – Kyle

답변

1

오히려 통해 반복 확인하고 각각의 중복에 대한 프롬프트보다, 당신은 단순히 모든 중복을 선택하고 한 번 사용자에게 메시지를 표시 할 수있다. 귀하의 GoDupe() 서브는 다음과 같이 볼 수 있습니다 :

Sub GoDupe() 

Cells.FormatConditions.AddUniqueValues 
With Cells.FormatConditions(Cells.FormatConditions.Count) 
    .DupeUnique = xlDuplicate 
    .Interior.Color = RGB(255, 0, 0) 
End With 
If MsgBox("Red highlighted cells are duplicated. OK to remove duplicates?", vbOKCancel) = vbOK Then 
    Cells.RemoveDuplicates Columns:=Array(1), Header:=xlNo 
    Range("A65536").End(xlUp).Offset(1, 0).Select 
End If 
Cells.FormatConditions(Cells.FormatConditions.Count).Delete 

최종 하위 당신은 속는를 확인하고 문자열에 기록하는 루프해야

+0

한 가지만, 첫 번째 열 (A 열)을 강조 표시하고 중복으로 삭제하기를 원하며, 다른 모든 열에는 때때로 중복 값이 ​​있으며 그 작업을 수행 할 수 있습니까? –

+0

그런 다음 단순히'Cells'가 아닌 특정 범위에서'RemoveDuplicates' 함수를 호출해야합니다. 예 : 'Range ("$ A : $ A"). RemoveDuplicates 열 : = 배열 ​​(1), 헤더 : = xlNo' – hughg