728x90

이번 포스팅은 2탄에서 작성했던 코드보다 좀 더 업그레이드된 코드입니다.

2탄에서 닉네임 'CFP'님의 질문으로 게시글을 작성하게 되었습니다.

 


 

// 2탄 코드

Sub 특정_행_전체삭제_업그레이드_Ver()
    
    For i = 0 To Selection.Rows.Count - 1 // 0 ~ (선택한 행 개수 - 1)만큼 반복
        
        If ActiveCell.Offset(i, 0).Value <> "" Then // 공백인 경우 함수를 종료
        
            If ActiveCell.Offset(i, 0).Value = "목표" Then // 목표인 경우
            
                ActiveCell.Offset(i, 0).EntireRow.Delete //행 삭제
                
                i = i - 1 // 행을 삭제했으니 다시 원래 위치로 돌아감
                
            End If
            
        Else
        
            Exit For
            
        End If
        
    
    Next i
    

End Sub

 

2탄 코드에서는 셀 내용의 값이 "목표"값과 완전히 일치하는 경우만 행이 삭제할 수 있다.

여기서 'InStr' 함수를 사용하면 셀 내용의 값이 "목표"를 포함하는 경우 행을 삭제하는 조건이 된다.

 

// 변경된 코드

Sub 특정_행_전체삭제_업그레이드_Ver()
    
    For i = 0 To Selection.Rows.Count - 1 // 0 ~ (선택한 행 개수 - 1)만큼 반복
        
        If ActiveCell.Offset(i, 0).Value <> "" Then // 공백인 경우 함수를 종료
        
            If InStr(ActiveCell.Offset(i, 0).Value, "목표") <> 0 Then // 목표가 포함된 경우
            
                ActiveCell.Offset(i, 0).EntireRow.Delete //행 삭제
                
                i = i - 1 // 행을 삭제했으니 다시 원래 위치로 돌아감
                
            End If
            
        Else
        
            Exit For
            
        End If
        
    
    Next i
    

End Sub

※ 요약

1. 변경한 행

  (기존)
  If ActiveCell.Offset(i, 0).Value = "목표" Then // 목표인 경우
  →
  (수정)
  If InStr(ActiveCell.Offset(i, 0).Value, "목표") <> 0 Then

 

2. 문법설명

InStr(셀 값, 찾을 문자) 설명 : 셀 값에서 찾고자 하는 특정 문자가 포함되면 문자열에서 특정 문자의 위치 값을 출력한다.

 

ex) InStr(ABCD, A) = 1(출력)

만일 포함된 문자가 없다면 0을 출력한다. 그렇기 때문에 0이 아닌 경우 문자가 포함되었다는 조건을 완성시킬 수 있었다.

 

728x90
TOP