딕셔너리 장점.
1. 데이터 검색,추가,수정,삭제 쉬움
2. 간단히 사용
3. 모든 데이터 (배열, 딕셔너리)를 넣어서 사용가능.
갖고있는 속성 (Property)
- Count : 현재 저장 갯수 반환
- Item("Key값") : "Key값" 을 이용해 할당되어있는 값을 반환
- Key("Item값") : "Item값" 을 이용해 할당되어있는 Key값을 반환
- CompareMode : Dictionary Object 에서 String(문자열) Key를 비교하는 모드.
갖고있는 매서드 (Method)
- Add [key]: key 값 추가 (존재하면 에러 key값 중복x)
- Add [Value] : item 값 추가
- Remove [key] : 유저가 지정한 Key값 및 value 제거
- RemoveAll : 모든 Key와 Value 제거
- Exists(키값) : 키값이 존재하면 True 반환, 없으면 False 반환
- Keys : 모든 key값을 배열(array)반환
- Items : 모든 value값을 배열(array)로 반환
딕셔너리를 생성할 때는 아래와 같이 만든다.
' dictionary 만들때
dim oDict
Set oDict = CreateObject("scripting.Dictionary")
딕셔너리의 인자는 Key : item 으로 이루어져 있다.
Key와 item 은 서로 1:1 매칭이며, Key값은 중복되지 않으며 고유하다. 이를통해 item을 빠르게 찾을 수 있다.
생성한 dictionary에 key값과 item값을 추가하는 방법은 아래와 같다.
oDict.Add key값, item값 (여기서 oDict 은 Dictionaray object)
' key : item 으로 구성
' 1 : apple
' 2 : banana
' "test" : "orange"
' 으로 매칭시켜놓음
dim oDict
Set oDict = CreateObject("scripting.Dictionary")
' key : item 으로 구성
' Add 매서드를 이용해 값 넣기
oDict.Add 1,"apple"
oDict.Add 2,"banana"
oDict.Add "test", "orange"
' Item 프로퍼티(속성)을 이용해 넣는 방법
oDict.Item("example") = "juice"
msgbox oDict.item(1)
msgbox oDict.item(2)
msgbox oDict.item("test")
(실행결과) 위 key값들이 순서대로 출력
Key값 변경하기
key값 1을 item값을 제거하고, 새로운 값 "damm"을 넣음
' dictionary 만들때
dim oDict
Set oDict = CreateObject("scripting.Dictionary")
' key : item 으로 구성
oDict.Add 1,"apple"
oDict.Add 2,"banana"
oDict.Add "test", "orange"
' Item 프로퍼티(속성)을 이용해 넣는 방법
oDict.Item("example") = "juice"
' 해당 key값을 제거하고 새로운 item 값을 넣음
oDict.Remove 1
oDict.Add 1,"damm"
msgbox oDict.item(1)
(결과)
Key값 존재 여부 확인 후 값 넣기
Key값이 이미 존재 한다면 해당 Key에 새로운 값을 넣음
' dictionary 만들때
dim oDict
Set oDict = CreateObject("scripting.Dictionary")
' key : item 으로 구성
oDict.Add 1,"apple"
oDict.Add 2,"banana"
oDict.Add "test", "orange"
' Item 프로퍼티(속성)을 이용해 넣는 방법
oDict.Item("example") = "juice"
if oDict.exists(1) then
oDict.item(1) = "pineapple"
End if
msgbox oDict.item(1)
아래 예시는 좀 더 복잡하게 Dictionary를 선언하여 Value값에 List와 같은 값을 넣어서 활용하는 방법이다.
VBScript는 List라는 Type이 없어서 Array를 사용한다.
https://ansan-survivor.tistory.com/1946
(자세한 사항은 마소 docs 보기)
https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/dictionary-object