With で New すると、Class を Initialize してくれる
先日、このような記事を書いた。
infoment.hatenablog.com
ところが一方で、 With ステートメントで New する場合は、ちゃんと Class を Initialize してくれる(最近知った)。(それにしても、なんて怪しい日本語)。
Sub test() With New Class1 ' 何某かの処理。 End With End Sub
実際は、変数で受けた方が便利な場合が多いので、使う機会は少ないかもしれない。でも、覚えておいて損は無いと思う。
もう一つ最近の個人的流行が、With ステートメントによる変数の省略だ。
例えば、テーブルにレコードを一つ追加して、1列目に数字を入力する場合。
ここに「ばなな」を追加する時、つい最近まで、このように書いていた。
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
可読性(分かり易さ)を損なわない程度なら、これもありかな。
参考まで。