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
'기타 > Excel(VBA)' 카테고리의 다른 글
VBA 예제 ] VBA코드로 선택한 값이 특정값일 때 행전체 삭제(4탄) (0) | 2021.07.27 |
---|---|
VBA 예제 ] VBA코드로 선택한 값이 특정값일 때 행전체 삭제(2탄) (4) | 2021.01.16 |
VBA 기초] 디버깅 및 값 출력 / VBA코드 사용방법(2탄) (0) | 2021.01.15 |
VBA 예제 ] VBA코드로 선택한 값이 특정값일 때 행전체 삭제 (3) | 2020.04.06 |
VBA 예제] VBA 콤마(,)기준으로 셀값 분리하기 / VBA 콤마 기준 분리 (0) | 2020.04.03 |