With で New すると、Class を Initialize してくれる

先日、このような記事を書いた。
infoment.hatenablog.com

ところが一方で、 With ステートメントで New する場合は、ちゃんと Class を Initialize してくれる(最近知った)。(それにしても、なんて怪しい日本語)。

Sub test()
    With New Class1
        ' 何某かの処理。
    End With
End Sub

f:id:Infoment:20200116223632g:plain

実際は、変数で受けた方が便利な場合が多いので、使う機会は少ないかもしれない。でも、覚えておいて損は無いと思う。

もう一つ最近の個人的流行が、With ステートメントによる変数の省略だ。
例えば、テーブルにレコードを一つ追加して、1列目に数字を入力する場合。

f:id:Infoment:20200116224315p:plain

ここに「ばなな」を追加する時、つい最近まで、このように書いていた。

Sub test()
    Dim Tb As ListObject
    Set Tb = ActiveSheet.ListObjects(1)
    
    Dim ListRow As ListRow
    Set ListRow = Tb.ListRows.Add
        ListRow.Range.Cells(1) = "ばなな"
End Sub

しかし今は、このように書くこともある(場合による)。

Sub test()
    With ActiveSheet.ListObjects(1).ListRows.Add
        .Range.Cells(1) = "ばなな"
    End With
End Sub

可読性(分かり易さ)を損なわない程度なら、これもありかな。

参考まで。