메뉴
해결 엑셀2019윈도우10

vba is nothing 관련 질문

채
12월 27일 조회 1,489
안녕하세요.

현재 업무 부분적으로 필요한 vba를 작성하고 있습니다.

여기저기 참고해서 제가 직접적으로 하는 코드들도 있지만,

간혹 감사하게도 제 질의에 전체적으로 해결 할 수 있는 코드를 통으로 제공해주시는 분들도 계셔서 덕분에 업무와 공부에 참고가 많이되고 있습니다.

 

하기 코드는 그리 어렵지 않은 코드로 C열과 L열에 "적립" 과 "택배" 라는 문구가 들어가 있으면 삭제하는 코드 입니다.

 

다른부분들은 전부 해석이 되는데

if delRange Is Nothing then 이부분이 해석이 잘 안됩니다.

 

제가 잘 몰랐던 부분은 주석을 달아놨고, 위에 언급한 Nothng 부분관련해서

주석이 틀린부분과 Nothing 해석이 맞는지,, 설명해주실 수 있을까요?

 

또한 하기 Nothing의 해석이 맞다면 delRange = "" 이런식으로 비어있는 경우로 코드를 작성하는 경우 에러가 나는데

이부분은 Range 개체는 범위이고, "" 부분은 값이기 때문에 안되는 것 일까요?

 

Dim delRange As Range
n = Range("A1").CurrentRegion.Rows.Count
For i = 3 To n
If InStr(1, Cells(i, "C") & Cells(i, "L"), "적립") Or InStr(1, Cells(i, "C") & Cells(i, "L"), "택배") Then
If delRange Is Nothing Then '' delRange가 비어있으면 delRange 값 세팅 (초기값)
Set delRange = Cells(i, "A")

Else
Set delRange = Union(delRange, Cells(i, "A"))  ''삭제 할 범위를 계속해서 집어 넣음

End If
End If
Next

If Not delRange Is Nothing Then ''delRange가 비어있지 않은 경우 delRange에 들어가 있는 범위 삭제
delRange.EntireRow.Delete
End If

댓글 2

원
원조백수 채택된 답변 12월 27일
For,,, Next 순환문에서  첫번째 IF 문이 참일 때,
아래 코드를 바로 실행하면 delRange가 Nothing이라서 오류가 납니다.
Set delRange = Union(delRange, Cells(i, "A"))

그래서 첫번째 실행시 delRange가 Nothing일 때는 Union을 안쓰고 그냥 지정하는 것입니다.
채
채원석 작성자 12월 28일
@원조백수 님 아, 초기화 해주는 개념이 아니라 값을 할당해줘야만해서 하는거군요,,! 알려주셔서 감사합니다 !!

질문답변 게시판의 최근 글

스크랩 완료