2017-12-28 21 views
1

私は軍の募集者で、オートフィルタを使用して別の範囲の範囲をフィルタリングしようとしています。私は別のstackoverflowページからこれを取得しましたが、文字列strSearchを123 @ gmail、234 @ gmail、345 @ gmailなどの範囲に変更する方法を見つけることができません。オプトアウトを削除するExcel 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 

End Subの

答えて

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

関連する問題