2017-03-28 1 views
0

단일 열 필터의 단일 입력 값을 기반으로 행을 삭제하는 코드를 작성했습니다. 동일한 열 필터에서 여러 입력 값을 처리하도록 편집하고 싶습니다. .Excel VBA - 단일 열 필터에서 여러 값의 행을 삭제합니다.

데이터베이스의 헤더는 A4 : Z입니다.

Option Explicit 

Sub Test() 

    Dim ws As Worksheet 
    Dim lastRow As Long 
    Dim rng As Range 
    Dim myValue As Variant 

    'set sheet reference 
    Set ws = ActiveSheet 

    'turn off autofilter 
    ws.AutoFilterMode = False 

    'get last row 
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row 

    'set range to filter 
    Set rng = ws.Range("A4:Z" & lastRow) 

    'get user input 
    myValue = InputBox("Periods to delete?") 

    'set filter 
    rng.AutoFilter Field:=8, Criteria1:=myValue 

    'delete visible rows 
    rng.Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete 

    'show remaining rows by removing autofilter 
    ws.AutoFilterMode = False 

End Sub 

입력란에는 현재 하나의 마침표 (월 번호)가 사용됩니다. 나는 '2,3,4'와 같이 여러 값을 사용하기를 원합니다. 그러면 2 (feb), 3 (3 월), 4 (4 월)이 삭제됩니다.

정말로 다음에 무엇을해야할지 모르겠다. 나는 아직 vba에 대한 newb입니다.

답변

1

자동 필터 라인을이 것으로 교체하십시오. 값을 입력 상자에 쉼표로 구분하여 입력한다고 가정합니다. 그것들을 배열로 변환합니다.

rng.AutoFilter Field:=8, Criteria1:=Array(Split(myValue, ",")), Operator:=xlFilterValues 
+0

감사합니다. –

+0

정말 죄송하지만 코드가 다음과 같은 값을 잡을 수있는 방법이 있습니까 : "16m1-16m5"? doesnt는 무엇이라도하는 것처럼 보인다. –

+0

구분 기호가 쉼표가 아닌 하이픈 인 경우 두 번째 분할 매개 변수를 하이픈으로 변경하십시오. – SJR