범위로 입력된 값을 변환하는 명령문 : 엑셀 cvRng 함수
구문
cvRng ( 범위 )
설명
엑셀 cvRng 함수는 범위로 받아온 인수를 다른 형식의 데이터로 변환해주는 함수입니다. 엑셀 워크시트에서 사용되는 사용자지정함수 제작시 유용하게 사용할 수 있습니다.
엑셀에서는 범위(Range)를 별도의 데이터타입으로 구분합니다. 따라서 워크시트 함수에 입력되는 인수로 '범위' 또는 '문자열' 두가지 형태가 입력 가능할 경우, 데이터형태에 따라 다른 처리방법이 필요합니다.

예를 들어, SUM 함수의 인수로는 '숫자' 및 '범위'가 모두 입력됩니다.
- =SUM(1,2,3) '// 6을 반환합니다.
- =SUM(A1:A3) '// A1:A3 범위의 합계를 계산합니다.
만약 SUM함수의 인수로 범위가 입력되었다고 가정할 시, 내부 코드에서 단순히 범위의 합계를 구하게 되면 엑셀은 오류를 반환합니다. 따라서 cvRng 함수를 통해 범위로 입력된 인수는 '범위'가 아닌 범위안에 입력된 '값' 형태로 데이터형식을 변경하여 합계를 계산해야 합니다.
대부분의 단순한 명령문에서는 VBA에서 기본적으로 지원하는 변환함수인 Cstr, Cdbl, Clng 등으로 해결할 수 있으나, 각각의 데이터타입마다 다른 작업이 필요한 명령문을 작성할 때에는 cvRng 함수를 응용하여 보다 편리하게 작업할 수 있습니다.
링크] MS홈페이지 데이터타입 변환함수 전체목록 보러가기
예제파일 다운로드
오빠두엑셀의 강의 예제파일은 여러분을 위해 자유롭게 제공하고 있습니다.
- [VBA예제] cvRng 명령문예제파일
cvRng 명령문 전체 코드
'############################################################### '오빠두엑셀 VBA 사용자지정함수 (https://www.oppadu.com) '▶ cvRng 함수 '▶ 사용자지정함수에서 범위로 인수를 받을 시 사용합니다. 만약 인수가 범위로 입력되었을 경우, 범위에 입력된 값을 반환합니다. '▶ 인수 설명 '_____________TargetRng : 값을 반환할 범위 또는 그외 값입니다. '############################################################### Function cvRng(TargetRng) If TypeName(TargetRng) = "Range" Then cvRng = TargetRng.Value Else cvRng = TargetRng End If End Function
cvRng 명령문 상세설명
사용예제
Sub Test() MsgBox cvRng(Selection) & vbNewLine & _ "데이터타입 : [ " & TypeName(cvRng(Selection)) & " ]" End Sub
인수설명
cvRng 명령문에는 총 1개의 인수가 들어갑니다.
- TargetRng : '범위' 또는 '그 외 데이터'로 입력되는 인수입니다.
명령문 동작원리
cvRng 명령문의 동작원리는 간단합니다. TypeName 함수를 사용하여, TypeName이 'Range(범위)'일 경우 범위의 값을 반환하고, 그 외 데이터형식일 경우 해당 데이터를 그대로 반환합니다.
If TypeName(TargetRng) = "Range" Then cvRng = TargetRng.Value Else cvRng = TargetRng End If