Skip Navigation Links.
Expand VBAVBA
엑셀프로그래밍이 필요한 이유
Expand ExcelExcel
Expand External LibraryExternal Library
Expand SolutionSolution
Expand EssayEssay

External Library

Scripting.Dictionary 오브젝트

Scripting 외부라이브러리는 아주 편리한 도구를 많이 제공한다
FileSystemObject 오브젝트를 제공하기도 하고
Dictionary 라는 오브젝트도 제공한다
이번 페이지에서는 Dictionary오브젝트를 활용해 보자
어떤 프로그래밍을 위하여 임시로 정보를 제공하기 위하여
단일변수를 선언하고..
배열변수을 사용하기도 하고
VBA에서 제공하는 Collection오브젝트변수를 사용하기도 하고
사용자정의 변수 Type 를 사용하기도 한다
어느것을 사용해도 어떤 프로그램이던지 안될것은 없지만
좀더 편리하게 하기 위하여 다양한 정보를 임시보관하는 장치를
제공하게 되는것이다

그중에 하나가 Scripting 외부라이브러리에서 제공하는
Dictionary오브젝트 변수가 있는것이다
이것을 사용해도 되고 안해도 된다
그러나 다른 정보를 담는 도구보다 편리하다고 느끼면
사용하면 되는 것이다
그러나 Scripting라이브러리는 앞으로 써먹을 곳이 많은 물건이라서
잘 익혀 두는것이 좋을것이다
아휴..엑셀이나 잘하지 뭘..!@#
하시는 분은 안해도 괞찮고..
발전 지향적이신 분이라면 말안해도 챙길 것이다

도구/참조메뉴에서 Scripting라이브러리를 참조하고
개체찾아보기 창을 열어 보면



왼쪽의 크래스창에서 Dictionary크래스모듈을 볼수 있을것이다
선택하면 오른쪽에 관련된 속성이나 메소드를 볼수 있다
아래와 같이 코딩하고 실행시켜 보시기 바란다

Sub UseDictionary() Dim oDic As New Scripting.Dictionary Dim rX As Range Dim rData As Range Dim iNum As Integer oDic.Add "아주불량", 6 oDic.Add "불량", 8 oDic.Add "보통", 3 oDic.Add "우량", 40 oDic.Add "아주우량", 15 Set rData = ActiveSheet.Range("A1:F20") For Each rX In rData.Cells iNum = Int(Rnd() * 10) + 1 With rX.Interior Select Case iNum Case 1 To 2: .ColorIndex = oDic("아주불량") Case 3 To 4: .ColorIndex = oDic("불량") Case 5 To 6: .ColorIndex = oDic("보통") Case 7 To 8: .ColorIndex = oDic("우량") Case 9 To 10: .ColorIndex = oDic("아주우량") End Select With .Parent .Value = iNum .BorderAround xlSolid .Font.Bold = True .Font.Name = "Arial" .Font.Size = 12 .HorizontalAlignment = xlCenter End With End With Next End Sub

어떤 부분이 편리한가??
사전(Dictionary)에서 단어(Key)를 찾으면 단어의 관련설명(Item)을
볼수 있듯이 정보의 이름을 찾으면 해당 관련 정보를
얻을수 있는 것이다

같은 효과를 그동안 익혔던 것과 새로운것을 추가시켜보면서 비교해보자
비교를 하면서 익히면 좀더 강하게 익혀진다
배열로 해보고
사용자정의 변수(Type)로 해보고
집합체오브젝트(Collection)로 해보고
상수(Constant)를 활용하기도 해보고
열거(Enum)상수를 활용하기도 해보고
하나 더 나가서 사용자정의 오브젝트(Class Module)로 해보자
크래스모듈이 이제 나온다
결국 크래스모듈이라고 하는것도 정보를 어떻게 체계적으로 관리할까??
라는 요구에 의하여 만들어진것이다



다른 것들과 Dictionary오브젝트를 비교해 보면서
다양한 방법을 한번 더 익히는 기회가 될것이다
다른 것은 모두 익숙한것이니
아주 기초적인 크래스모듈의 활용부분을 눈여겨 보시기 바란다


ScriptingDictionary_ClassModule.