본문 바로가기
excel VBA

엑셀 VBA 데이터 타입 정리

by 퍼포먼스마케팅코더 2023. 8. 30.
반응형

상수

상수란 '변하지 않는 수'라는 뜻이다. 프로그램의 시작부터 종료까지 고정된 값(숫자,문자열 등등)을 가진다.

변수

변수란 '변하는 수'라는 의미이다. 프로그램이 실행되는 동안 값을 변경할 수 있다.

변수의 유형

Byte 형

Microsoft Office97에 포함된 Excel8.0부터 지원되기 시작하였다. 1byte를 차지하는 만큼 작기 때문에 다룰 수 있는 수의 범위도 0~255까지이다. Byte형은 주로 256번 이하의 반복에 사용하기 적당하지만 하위버전의 Excel과의 호환을 고려한다면 Integer형을 사용하는 것이 좋다.

Boolean형

True 혹은 False 값을 가지며 16비트(2바이트)로 저장된다. Print문을 사용하여 Boolean 변수를 출력하면 True 또는 False로, Write #를 사용하여 파일출력을 하면 #TRUE# 또는 #FALSE#로 표시된다. 만일 숫자를 Boolean변수에 대입하면 0은 False로, 그 밖의 다른 값들은 True로 변환된다. 거꾸로 Boolean값이 다른 데이터 형식으로 변환될 때, False는 0으로 True는 -1로 변환된다. Boolean변수에 참이나 거짓값을 할당하려면 다음 예와 같이 하면 된다.

Dim TF As Booelan
TF=True

Integer형

정수를 표시하며 다룰 수 있는 수의 범위는 -32,768 - 32,767까지이다.

Long형

Integer형과 함께 정수를 다루는 데이터형으로 Integer형보다 다룰 수 있는 수의 범위가 넓다. -2,147,483,648 - 2,147,483,647까지 다룰 수 있다.

Single형

음수인 경우 -3.402823E38부터 -1.401298E-45까지, 양수인 경우 1.401298E-45부터 3.402823E38까지 부동 소수점 숫자를 저장한다.

Double형

음수인 경우 1.79769313486232E308부터 - 4.94065645841247E-324까지이며 양수인 경우 4.94065645841247E-324부터 1.79769313486232E308까지이다.

Currency형

정수부분 15자리와 소수점이하 4자리를 저장할 수 있으며 이 값은 922,337,203,685,477.5808부터 922,337,203,685,477.5807까지 표현이 가능합니다. Currency 데이터 형식은 정확성이 요구되는 고정 소수점 계산과 돈 계산 등에 유용하다.

Decimal형

색다른 데이터형이다. 다른 데이터형이 Dim~As문을 사용하여 명시적으로 선언할 수 있는데 비해 Decimal형은 자신의 데이터형 선언이 없이 뒤에서 배울 Variant으로 선언한 후 CDec 함수를 사용하여 Decimal형으로 사용할 수 있다. 예를 들어 Dim DDD As Decimal같이 선언하면 에러가 난다. Deciaml형이 다룰 수 있는 범위는 소수점 아래 자리가 없게 잘린 경우 가능한 가장 큰 값은 +/-79,228,162,514,264,337,593,543,950,335.이며, 소수점 아래 28자리의 경우 가장 큰 값은 +/-7.9228162514264337593543950335이고 0이 아닌 가장 작은 값은 +/-0.0000000000000000000000000001이다.

Date형

100년 1월 1일부터 9999년 12월 31일까지의 날짜와 0:00:00부터 23:59:59까지의 시간을 표현할 수 있다. 흔히 날짜를 표시할 때 98-09-11,98.09.11등등의 인식 가능한 날짜 형식의 모든 글자는 Date 변수로 저장할 수 있다. 그러나 날짜를 직접 변수에 대입하려면 #January 1, 1993# 또는 #1 Jan 93#등과 같이 기호(#)를 사용해야 한다. 숫자 형식을 Date로 변환할 경우 정수 부분의 값은 날짜를 나타내고 소수점 아래의 값은 시간을 나타낸다. 자정은 0으로, 정오는 0.5로 표시하며 음수는 1899년 12월 30일 이전의 날짜를 나타낸다.

String형

문자열을 저장하는 데이터형이다. 문자당 1byte를 차지하면 보통 65,535개 문자를 저장할 수 있다. String형 변수는 저장할 수 있는 문자수를 미리 정해두는 고정길이 문자열변수와 정하지 않는 가변길이 문자열변수로 나눈다. 가령 다음과 같이 선언할 때 고정길이와 가변길이 문자열 변수가 된다.

Dim FixedStr As String*20
Dim FlexStr As String

FixedStr은 고정길이(20) 문자열 변수로 만일 40개의 문자를 대입하면 그중 20번째까지의 문자만 저장한다.

Variant 데이터 형식

여러 종류의 데이터형을 다룰 수 있다. 특별히 데이터형지정없이 사용하거나 Variant라고 선언하여 이용할 수 있다. Variant는 고정 길이 String과 사용자 정의 형식 이외의 모든 종류의 데이터를 처리할 수 있는 특별한 데이터 형식이다. 그러나 이러한 장점에 비해 메모리를 많이 차지하는 단점이 있다. Variant는 Empty, Error, Nothing, Null 등의 특정한 값을 가질 수 있다. 숫자 데이터의 경우 음수는 1.797693134862315E308부터 -4.94066E-324까지, 양수는 4.94066E-324부터 1.797693134862315E308까지 표현할 수 있다. Variant 데이터 형식은 유연성 있게 데이터를 다루는 작업을 해야 하는 곳에서 사용한다.

사용자 정의 데이터 형식

Type 문을 사용해서 만든 데이터 형식을 말한다. 앞서 여러 데이터형이 있지만 이들을 하나로 묶어 번잡함을 피하기 위해 사용한다. 가령 사람의 시산에 관한 자료처리를 하려고 하면 여러 데이터형이 필요하다. 이름을 표시하려면 문자열형 변수가, 생년월일을 표시하려면 날짜형 변수가, 성별을 표시하는데 Boolean형 변수가 필요할 것이다. 이들을 하나로 모아 두면 처리가 보다 편할 것이다. 그리고 그 정의는 반드시 프로시저 밖에서 이루어진다. 예를 들면 다음과 같다.

Type PersonalType
    strName As String       ' 문자열 변수는 이름을 저장합니다.
    BirthDate As Date       ' 날짜 변수는 생일을 저장합니다.
    Sex As Boolean      ' Boolean 변수는 성별로 저장합니다.
End Type

Sub PersonalRecord(  )
    Dim Park As PersonalType
    …
End Sub

Object형

개체를 저장하는 데이터형이다. 이 책에서 다루는 범위내에서 설명하자면 개체란 Excel프로그램 자체와 그내부의 메뉴, 파일, 시트등등을 의미한다는 정도만 알아두자. Object로 선언된 변수는 Set 문을 사용하여 개체를 지정할 수 있다.

Dim MySheet As Object
Set MySheet=Worksheets(“Sheet1”)

배열(array)

데이터형은 아니다. 그러나 앞서 사용자 정의 데이터 형식이 여러 종류의 데이터형을 모아 둔 것인데 반해 배열은 동일한 데이터형을 가진 변수의 집합이다. 배열은 위의 모든 데이터형을 이용할 수 있는데 앞의 사용자정의 데이터형의 예를 배열로 구성하면 다음과 같다.

Type PersonalType
    strName As String
    BirthDate As Date
    Sex As Boolean
End Type

Sub PersonalRecord(  )
    Dim Person(100) As PersonalType
    …
End Sub

기본적인 테이타형 요약

데이터 형식저장용량범위

Byte 1byte 0 - 255까지
Boolean 2byte True 또는 False
Integer 2byte -32,768 - 32,767까지
Long 4byte -2,147,483,648 - 2,147,483,647까지
Single 4byte -3.402823E38 - -1.401298E-45까지(음수값); 1.401298E-45 - 3.402823E38까지(양수값)
Double 8byte -1.79769313486232E308 - -4.94065645841247E-324; 4.94065645841247E-324 - 1.79769313486232E308
Currency 8byte -922,337,203,685,477.5808 - 922,337,203,685,477.5807
Decimal 14byte +/-79,228,162,514,264,337,593,543,950,335 (소수점 이하 없음); +/-7.9228162514264337593543950335 (숫자의 오른쪽으로부터 28번째); 0이 아닌 최소 숫자+/-0.0000000000000000000000000001.
Date 8byte 100년 1월 1일 – 9999년 10월 31까지
Object 4byte 모든 개체 참조
String(가변) 10byte + 문자열 길이 0 - 약 2조
String(고정) 문자열 길이 1 - 약 65,400
Variant(숫자) 16byte Double형 범위 내의 모든 숫자
Variant(문자) 22byte+ 문자열 길이 변수-길이 String과 같은 범위
사용자 정의 형식 Type 사용) 요소가 사용하는 숫자
반응형

'excel VBA' 카테고리의 다른 글

엑셀 VBA 날짜 시간 함수  (0) 2023.08.30
엑셀 VBA 변수, 배열 및 선언하기  (0) 2023.08.30
엑셀 VBA while  (0) 2023.08.30
엑셀 VBA 함수  (0) 2023.08.30
엑셀 VBA 조건문(If), 반목문(For) 문법  (0) 2023.08.30

댓글