엑셀 VBA에서는 셀이 가지는 값을 가장 많이 활용합니다. 그도 그럴 것이, 엑셀 문서는 통상적으로 데이터와 수식으로 이루어져 있기 때문입니다.
1. value
엑셀에서 값을 가지고 올 때, 통상적으로 셀의 위치 정보만 표시합니다. 자료를 입력하여 출력해보겠습니다.
Sub valueType()
Cells(1, 1) = 100
Debug.Print Cells(1, 1)
Debug.Print Cells(1, 1).Value
End Sub
직접 실행창에 출력된 내용을 보면, 둘다 100으로 출력된 것을 확인할 수 있습니다. 이처럼 속성(Property)를 지정하지 않으면, value로 전달합니다.
2. value2
value2는 value와 다르게 화폐(Currency)와 날짜(Date) 형태를 사용하지 않습니다.
Sub value2Type()
Cells(1, 1) = "2022-03-01"
Debug.Print Cells(1, 1).Value
Debug.Print Cells(1, 1).Value2
End Sub
직접 실행창에 출력된 내용을 보면, value는 "2022-03-01"을 출력하고, value2는 "44621"을 출력합니다. value2는 일반적으로 value, text보다 속도가 빠릅니다.
3. text
text는 서식이 적용된 값이 출력합니다. 엑셀에서 보여지는 대로 출력된다고 보시면 됩니다.
Sub textType()
Cells(1, 1).Value = 123.456
Cells(1, 1).NumberFormatLocal = "0.0"
Debug.Print Cells(1, 1).Value
Debug.Print Cells(1, 1).Value2
Debug.Print Cells(1, 1).Text
Cells(1, 2).Value = "2022-03-01"
Debug.Print Cells(1, 2).Value
Debug.Print Cells(1, 2).Value2
Debug.Print Cells(1, 2).Text
End Sub
A1에는 123.456의 소수점 첫째자리까지 보이도록 서식을 적용하여, 123.5로 보입니다. B1에는 "2022-03-01"을 입력했으나, 열 너비로 인해 "#######"로 보입니다.
직접 실행창에 출력된 내용을 보면, A1의 value와 value2는 동일하게 "123.456"으로 출력되고, text만 "123.5"로 다르게 출력됩니다. A2의 경우, value는 "2022-03-01"로, value2는 "44621"로, text는 "######"로 출력되어, 세 가지 경우 모두 다르게 출력되는 것을 확인할 수 있습니다.
자료를 비교하는 VBA를 만든다면, 자료의 종류에 따라서 적절한 속성(Property)을 선택하여 프로그래밍하시기 바랍니다. 속도 이슈는 아래 링크를 참고하시기 바랍니다.
https://fastexcel.wordpress.com/2011/11/30/text-vs-value-vs-value2-slow-text-and-how-to-avoid-it/
'엑셀' 카테고리의 다른 글
[엑셀] A4 한 장 안에 담은 단축키 (4) | 2022.11.05 |
---|---|
[엑셀] VLOOKUP 함수 #N/A 오류처리 (0) | 2022.03.04 |
[엑셀VBA] 폴더 생성(MkDir) (0) | 2022.02.26 |
[엑셀VBA] 파일, 폴더 선택(FileDialog) (0) | 2022.02.24 |
[엑셀] 중복 자료(데이터) 확인하는 3가지 방법 (0) | 2021.05.11 |