VBA 범위 선택하기 4탄 (Specialcells 사용법)
Specialcells는 엑셀 VBA에서 약방의 감초같은 역할을 하는데요. 다양한 옵션을 사용할 수 있기때문에 범위선택을 위한 유용한 역할을 하고 있어요. 빈셀이나 수식이 입력된 셀 등 특수한 상황에서의 범위를 선택할 수 있으니 꼭 숙지하시기 바래요.
오늘은 VBA 범위 선택하기 4탄 Specialcells를 사용한 범위지정에 대해 알아보도록 할게요. 범위 선택의 방법은 매우 다양하므로 1~3탄을 아직 숙지하지 못하셨다면 숙지 후 오시는 것을 추천드립니다.
VBA 범위 선택 목차
1. VBA 범위 선택하기 1탄 : Range로 범위 선택
2. VBA 범위 선택하기 2탄 : Cells와 Resize, Offset의 조합을 통한 범위 선택
3. VBA 범위 선택하기 3탄 : Union, Intersect을 사용한 범위 선택
4. VBA 범위 선택하기 4탄 : Specialcells를 통한 범위 선택
5. VBA 범위 선택하기 5탄 : UsedRange, CurrentRegion, entirerow(column)을 통한 범위 선택
6. VBA 범위 선택하기 6탄 : Areas를 사용한 범위 선택
벌써 VBA 범위 선택 방법을 절반 넘게 숙지하는 시간을 보냈어요! 조금만 더 힘을 내셔서 VBA학습을 이어나가 보아요!
자 그럼 Specialcells를 통한 범위 선택 방법에 대해 알아볼게요.
Specialcells의 기본 문법을 알아보자.
specialcells의 기본문법을 먼저 살펴보도록 할게요.기본 문법은 기준 개체.specialcells(option)인데요. VBA에서 specialcells는 엑셀의 이동 옵션을 뜻해요. 찾고자 하는 범위를 선택 후 F5 or Ctrl+G를 누르면 아래와 같은 이동 옵션창이 뜨는 것을 확인하실 수 있어요.
이동 옵션창이 활성화 되었다면 좌측하단의 옵션(S)버튼을 통해 세부창으로 이동할 수 있습니다.
이동 옵션창에는 다양한 종류의 옵션들이 존재하는 것을 볼 수 있는데요. 즉, 내가 원하는 조건에 맞는 셀이나 범위를 선택할 수 있는 다양한 속성을 가지고 있어요.
오늘 알아볼 내용은 범위 설정이기 때문에 수식(F), 빈셀(K)를 사용하여 설명드릴 예정이에요.
지금까지 Specialcells의 기본 문법과 이동 옵션에 대해 알아보았으니, VBA로 어떻게 활용이 되는지 알아보시죠!
Specialcells을 사용한 범위 설정
아래 코드는 Specialcells를 사용하여 원하는 범위 or 셀을 선택하고 수정하는 방법을 작성한 코드인데요.
세부사항을 보며 하나씩 알아가는 시간이 되었으면 좋겠어요.
sub specialcells() dim rng as range ' 변수 선언 set rng = range("b2").currentRegion ' A1셀부터 연속된 범위를 설정 On Error Resume Next ' 오류가 발생하면 다음 작업으로 넘어가도록 설정 rng.specialcells(xlcellTypeBlanks).select ' 이동옵션을 통해 범위내 빈칸만 선택(범위 선택의 예를들기 위해 Select 매서드 사용) rng.specialcells(xlcellTypeBlanks) = " * " ' 이동옵션을 통해 범위내 빈칸만 선택하여 빈칸에 * 입력 rng.specialcells(xlcellTypeFormulas, xlErrors) = " " ' 이동옵션을 통해 범위내 수식 오류만 선택하여 삭제하기 If Err Then Msgbox "수식이 없습니다." ' 이동옵션을 통해 선택된 범위에 수식이 없다면 메시지박스를 통해 Alert On Error GoTo 0 ' 오류 초기화 작업 end sub |
dim rng as range의 경우는 rng라는 변수를 사용하기 위해 선언해 주었어요. On Error Resume Next ~ On Error GoTo 0의 경우 매크로 오류 발생 시 오류를 무시하고 다음단계로 넘어가도록 하는 코드인데요. 매우 유용하게 사용되는 코드이므로 숙지해 놓으면 좋아요.
만약 선택된 범위안에 빈칸이 없다면 오류를 표시하게 되는데요. 이러한 오류가 나타나지 않고 다음 단계로 넘어갈 수 있도록 만들어 주는 코드입니다.
set rng=range("b2").currentRegion는 B2셀에서 데이터가 있는 마지막 셀까지 연속 범위를 설정하는 방법인데요. 여기서 currentRegion는 아직 다루지 않았던 속성으로 VBA 범위 선택하기 5탄에서 세부적으로 다룰 예정이기 때문에 이러한 코드가 있다 정도로만 스킵해 주세요.
rng.specialcells(xlcellTypeBlanks). select는 이동 옵션을 통해 빈 셀만 선택하는 동작을 하게 되는데요. 이번 코딩에서는 범위가 어떻게 선택되는지 예시로 사용된 코드이니 어떻게 동작되는지만 집중해 주세요.
rng.specialcells(xlcellTypeBlanks) = " * "는 Select라는 선택 동작 대신 빈셀에 *을 입력하는 동작으로 나타나게 되죠.
실행해 보세요! "*"이 빈칸에 잘 입력되는게 보이시죠?!
specialcells에는 다양한 종류의 매개변수가 존재하는데요. 종류를 살펴본 후 상황에 따라 사용해주시면 좋을 거 같아요.
rng.specialcells(xlcellTypeFormulas, xlErrors)=" "는 오류셀을 선택하고 오류를 삭제하는 코드로 사용되었어요.
실행해 보시면 "D11"셀의 수식 오류가 삭제되어 빈칸으로 출력되는것을 확인할 수 있어요.
만약 수식오류가 존재하지 않게되면 VBA가 오류를 발생시키게 되겠죠. 위에서 사용된 On Error Resume Next ~
On Error GoTo 0 코드가 적용되어 오류가 발생하지 않고 다음 단계로 진행됩니다.
완성된 VBA 코드를 F5키를 눌러서 작동시켜 보시면, 범위 내 빈셀에는 " * "이 반영되었고, 수식 오류가 있었던 "D11"셀의 내용은 삭제되어 빈칸이 된 것을 확인할 수 있어요. 또한 IF절을 통해 메시지박스를 설정함으로써 수식이 존재하지 않을 경우 알림을 줄 수 있으며, 수식은 If Err Then MsgBox "수식이 없습니다."라고 사용하였어요.
마치며
지금까지 Specialcells를 사용한 범위선택에 대해 공부해 보았는데요. 범위선택 방법은 매우 다양하기때문에 본인에게 가장 잘맞는 방법을 선택하시는게 좋아요. 다음 포스팅은 VBA범위 선택하기 5탄, UsedRange, CurrentRegion, entirerow(column)을 통한 범위 선택으로 찾아뵐게요.
▼▼▼함께 보면 좋은 정보▼▼▼
공부한 시간만큼 퇴근이 빨라진다.
댓글