2012年12月9日日曜日

[ExcelVBA] 省略記法


アドベントカレンダー 9日目

連想配列好きな人は、Dictionaryオブジェクトをガンガン使っているとおもいますが
DictionaryオブジェクトのItemは省略して書くことができますよ。

Option Explicit

Sub SampleCode()
    Dim DicObj As Object
    Set DicObj = CreateObject("Scripting.Dictionary")

    DicObj.Add "First", CreateObject("Scripting.Dictionary")
    DicObj.Item("First").Add "Second", CreateObject("Scripting.Dictionary")
    DicObj.Item("First").Item("Second").Add "Third", CreateObject("Scripting.Dictionary")
    DicObj.Item("First").Item("Second").Item("Third").Add "Fourth", CreateObject("Scripting.Dictionary")
    DicObj.Item("First").Item("Second").Item("Third").Item("Fourth").Add "Fifth", "ok"
    
    Debug.Print DicObj.Item("First").Item("Second").Item("Third").Item("Fourth").Item("Fifth")
    Set DicObj = Nothing
End Sub

これをItemを省略して書くと…
Option Explicit

Sub SampleCode()
    Dim DicObj As Object
    Set DicObj = CreateObject("Scripting.Dictionary")

    DicObj.Add "First", CreateObject("Scripting.Dictionary")
    DicObj("First").Add "Second", CreateObject("Scripting.Dictionary")
    DicObj("First")("Second").Add "Third", CreateObject("Scripting.Dictionary")
    DicObj("First")("Second")("Third").Add "Fourth", CreateObject("Scripting.Dictionary")
    DicObj("First")("Second")("Third")("Fourth").Add "Fifth", "ok"
    
    Debug.Print DicObj("First")("Second")("Third")("Fourth")("Fifth")
    Set DicObj = Nothing
End Sub

見慣れない人には、わかりづらいかもしれませんが、
深い階層になった時横に長くなってみづらいことは
まぁまぁあるんで、そういう時とかのためにも.Itemを省略した
書き方に慣れてしまうのも一つの手なのかもしれませんね。

ちなみに、Collectionの.Itemは省略すると叱られます。

0 件のコメント: