해결 엑셀2019윈도우10
vba is nothing 관련 질문
안녕하세요.
현재 업무 부분적으로 필요한 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
현재 업무 부분적으로 필요한 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
채
k
댓글 2
아래 코드를 바로 실행하면 delRange가 Nothing이라서 오류가 납니다.
Set delRange = Union(delRange, Cells(i, "A"))
그래서 첫번째 실행시 delRange가 Nothing일 때는 Union을 안쓰고 그냥 지정하는 것입니다.