본문 바로가기

VBA 범위 선택하기 4탄 (Specialcells 사용법)

택이형. 2022. 12. 18.

 

Specialcells는 엑셀 VBA에서 약방의 감초같은 역할을 하는데요. 다양한 옵션을 사용할 수 있기때문에 범위선택을 위한 유용한 역할을 하고 있어요. 빈셀이나 수식이 입력된 셀 등 특수한 상황에서의 범위를 선택할 수 있으니 꼭 숙지하시기 바래요.

 

 

Specialcells를 사용하여 범위선택하기
Specialcells를 사용하여 범위선택하기

 

 

 

오늘은 VBA 범위 선택하기 4탄 Specialcells를 사용한 범위지정에 대해 알아보도록 할게요. 범위 선택의 방법은 매우 다양하므로 1~3탄을 아직 숙지하지 못하셨다면 숙지 후 오시는 것을 추천드립니다.

 

 

VBA 범위 선택하기 1탄 (Range)

안녕하세요. 택이형과 회사에서 VBA로 생존하기 택이형입니다. 앞서 VBA를 사용하기 위한 기본적으로 적용하여야 하는 것들과 기초용어에 대해 알아보았는데요. 기초용어를 숙지하신 후 따라오

lst914.tistory.com

 

VBA 범위 선택하기 2탄 (Cells, Offset, Resize 조합)

안녕하세요. 택이형과 회사에서 VBA로 생존하기 택이형입니다. 오늘은 VBA 범위 선택하기 2탄 Cells, Offset, Resize속성을 가지고 범위를 지정해 보도록 할게요. 우선 Range로 범위 설정하기에 대한 학습

lst914.tistory.com

 

VBA 범위 선택하기 3탄 (Union, Intersect 사용법)

안녕하세요. 택이형과 회사에서 VBA로 생존하기 택이형입니다. 오늘을 VBA 범위 선택하기 3탄 Union, Intersect를 사용한 범위지정에 대해 알아보도록 하겠습니다. 1,2탄을 학습하지 않으셨다면 아래

lst914.tistory.com


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를 누르면 아래와 같은 이동 옵션창이 뜨는 것을 확인하실 수 있어요.

 

이동옵션을 선택하기 위해서는 F5 or Ctrl+G를 눌러주세요
이동옵션을 선택하기 위해서는 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").currentRegionB2셀에서 데이터가 있는 마지막 셀까지 연속 범위를 설정하는 방법인데요. 여기서 currentRegion는 아직 다루지 않았던 속성으로 VBA 범위 선택하기 5탄에서 세부적으로 다룰 예정이기 때문에 이러한 코드가 있다 정도로만 스킵해 주세요.

 

rng.specialcells(xlcellTypeBlanks). select는 이동 옵션을 통해 빈 셀만 선택하는 동작을 하게 되는데요. 이번 코딩에서는 범위가 어떻게 선택되는지 예시로 사용된 코드이니 어떻게 동작되는지만 집중해 주세요.

 

rng.specialcells(xlcellTypeBlanks) = " * "는 Select라는 선택 동작 대신 빈셀에 *을 입력하는 동작으로 나타나게 되죠.

실행해 보세요! "*"이 빈칸에 잘 입력되는게 보이시죠?!

 

specialcells로 빈셀을 선택 후 " * "를 기입하는 코드 짜기
specialcells로 빈셀을 선택 후 " * "를 기입하는 코드 짜기

 

specialcells에는 다양한 종류의 매개변수가 존재하는데요. 종류를 살펴본 후 상황에 따라 사용해주시면 좋을 거 같아요.

 

 

Specialcells의 매개변수 종류
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)을 통한 범위 선택으로 찾아뵐게요.

 

▼▼▼함께 보면 좋은 정보▼▼▼

 

VBA 범위 선택하기 6탄! Areas를 사용한 범위 선택!!

UsedRange, CurrentRegion이 연속적인 범위를 설정하는 방법으로 주로 사용되었다면, Areas의 경우는 비연속적인 범위를 설정하는 방법으로 사용됩니다. VBA반복문과 궁합이 잘맞기 때문에 학습해 두시

lst914.tistory.com

 

 

VBA 범위 선택하기 5탄 (UsedRange, CurrentRegion, entirerow)

『 UsedRange, CurrentRegion, entirerow는 연속된 범위를 설정하는 방법으로 유용하게 사용될 수 있어요. 다양한 예시를 통해 학습하시면 VBA실력이 한단계 업그레이드 될거에요. 』 오늘은 VBA 범위 선택

lst914.tistory.com

 

 

VBA 범위 선택하기 3탄 (Union, Intersect 사용법)

『 Union, Intersect를 활용하면 교집합과 합집합의 범위를 한번에 설정할 수 있어요. 특히 Union의 경우는 앞으로 변수들을 합치는 방법으로도 사용될 예정이니 꼭 완벽숙지하시기 바래요! 』 오늘을

lst914.tistory.com

 

 

VBA 범위 선택하기 2탄 (Cells, Offset, Resize 조합)

『 Cells, Offset, Resize를 활용하여 엑셀의 범위를 자유자재로 선택할 수 있어요. 각 속성이 가지는 특징과 예시를 통해 범위선택이 자연스럽게 익혀지도록 연습해 보세요. 』 오늘은 VBA 범위 선택

lst914.tistory.com

 

 

VBA 범위 선택하기 1탄 (Range)

『 VBA를 본격적으로 활용하기 위해서는 적용하고자하는 범위를 선택하는 방법을 알아야 하는데요. VBA에서 자주 사용되는 6가지의 범위선택법을 학습하여 VBA의 기초를 다져볼게요! 』 앞서 VBA를

lst914.tistory.com

 

 

공부한 시간만큼 퇴근이 빨라진다.

댓글