2017-12-28 12 views
1

나는 군대 신병 모집 중이며 다른 범위의 범위를 걸러 내기 위해 자동 필터를 사용하려고합니다. 나는 다른 stackoverflow 페이지에서이 문자열 strSearch를 123 @ gmail, 234 @ gmail, 345 @ gmail 등과 같은 범위로 변경하는 방법을 알아낼 수 없습니다.엑셀 아웃 VBA 제외

우리는 리드 목록을 얻지 만 싶습니다. 옵트 아웃 목록을 유지하고 VBA에서 옵트 아웃 워크 시트의 값이있는 셀을 다시 확인하고 삭제하도록합니다. 나는 VBA에 꽤 새로 왔지만 그것을 정말로 즐긴다. 고맙습니다!

StrSearch = Sheets ("Opt-Outs") Range ("A : A")가 A : A의 모든 값을 취하여 자동 필터로 사용하도록하고 싶습니다. 나는 그것이 문자열 배열 일 필요가 있지만 거기에 도착하는 방법으로 길을 잃을 것이라고 생각한다. 도와주세요. 이

Sub optout20171227() 
Dim ws As Worksheet 
Dim lRow As Long 
Dim strSearch As String 

'~~> Set this to the relevant worksheet 
Set ws = ThisWorkbook.Worksheets("Email Addresses") 

'~~> Search Text 
strSearch = Sheets("Opt-Outs").Range("A2") 

With ws 
    '~~> Remove any filters 
    .AutoFilterMode = False 

    lRow = .Range("A" & .Rows.count).End(xlUp).Row 

    With .Range("A1:A" & lRow) 
     .AutoFilter Field:=1, Criteria1:="=*" & strSearch & "*" 
     .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete 
    End With 

    '~~> Remove any filters 
    .AutoFilterMode = False 
End With 

답변

0

이 그것을해야 최종 하위 ...

Sub optout20171227() 
Dim ws As Worksheet 
Dim lRow As Long 
Dim strSearch As String 
Dim v() As Variant 

'~~> Set this to the relevant worksheet 
Set ws = ThisWorkbook.Worksheets("Email Addresses") 

'~~> Search Text 
strSearch = Sheets("Opt-Outs").Range("A2") 
v = Application.Transpose(Sheets("Opt-Outs").Range("A:A")) 

With ws 
    '~~> Remove any filters 
    .AutoFilterMode = False 

    lRow = .Range("A" & .Rows.count).End(xlUp).Row 

    With .Range("A1:A" & lRow) 
     .AutoFilter Field:=1, Criteria1:=v 
     .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete 
    End With 

    '~~> Remove any filters 
    .AutoFilterMode = False 
End With 
+0

안녕하세요, 작동하지 않았다 그러나, 당신의 통찰력 주셔서 감사합니다. 이것은 내가 일을 끝내고 다시 한 번 감사드립니다! – Joe

+0

@Joe 작동하지 않는 이유는 무엇입니까? 그것이 잘못 됐는지 말해 주시고 제가 고치려고합니다 – Maldred

+0

@Joe 또한 제 쪽에서 사소한 실수를 보았습니다. 나는'v'를'v()'로 바꿔야 만했습니다 – Maldred

0
Dim ws As Worksheet 
Dim lRow As Long 
Dim strSearch As Variant 
Dim i As Integer 
i = 1 

Sheets("Opt-Outs").Select 
Range("H2").Value = "Ready" 
Range("A2").Select 
Do While Range("H2").Value <> Empty 


Sheets("Opt-Outs").Select 
Range("A2").Select 
Cells(i + 1, 1).Copy 
i = i + 1 

Range("H2").Select 
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 

If Range("H2").Value = IsBlank Then 
Sheets("Email Addresses").Select 
Exit Sub 
Else 

'~~> Set this to the relevant worksheet 
Set ws = ThisWorkbook.Worksheets("Email Addresses") 

'~~> Search Text 
strSearch = Sheets("Opt-Outs").Range("H2") 

With ws 
    '~~> Remove any filters 
    .AutoFilterMode = False 

    lRow = .Range("A" & .Rows.count).End(xlUp).Row 

    With .Range("A1:A" & lRow) 
     .AutoFilter Field:=1, Criteria1:="=*" & strSearch & "*" 
     .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete 
    End With 

    '~~> Remove any filters 
    .AutoFilterMode = False 
End With 
End If 
Loop 
+0

IsBlank 및 Empty와 같은 변수가 눈에 띄게 정의 된 경우 전체적으로 올바르게 들여 쓰기 된 경우이 기능을 개선 할 수 있습니다. – QHarr