読者です 読者をやめる 読者になる 読者になる

t-hom’s diary

主にVBAネタを扱っているブログです。

VBA 変数宣言で途中改行する

VBAでは、半角スペースに続けてアンダーバーを書くことでステートメントの途中で改行することができる。

実は昔、この途中改行が嫌いだった。理由は単に自分が途中改行されたコードに慣れてなかっただけで、慣れてからガンガン使うようになっている。

たとえば変数宣言。以下のように2行で書くのが主流だ。

    Dim SampleCollection As Collection
    Set SampleCollection = New Collection

私の場合はちょっと前までこのように1行で書いていて、

    Dim SampleCollection As Collection: Set SampleCollection = New Collection

最近はこんな感じのコードも増えてきた。

    Dim SampleCollection As Collection: Set SampleCollection _
        = New Collection

ほんとはVB.Netみたいに

    Dim SampleCollection As New Collection

とか、

    Dim SampleInteger As Integer = 10

という風に書きたいんだけど、VBAの場合は変数宣言と同時にNewすると挙動が変わる問題もあるし、後者のIntegerについてはそもそもそのように書けない。
thom.hateblo.jp

Collection型で宣言してるのでCollection型のインスタンスを入れるのは明白。にもかかわらず改めてSetでNew Collectionと書かなければならない。変数名も型名も2回ずつ書く必要があるので、くどい。

f:id:t-hom:20170103185115p:plain


ということで、右半分は無視することにした。
f:id:t-hom:20170103184713p:plain



…てのは冗談で、元々は「はてなブログ対策」で考えた記法。

はてなブログには「はてなスーパープレ記法※」という便利な機能があって、>|言語|||<で括るとその言語のコードを色分けしてくれる。
※ブログの基本設定から編集モードをはてな記法モードにしておく必要あり。

たとえばVBAの場合は>|vb|||<で括る。

さて、便利なんだけど、コードの場合は文字の折り返しが効かず(それがpreなので)、こんな感じで少し長いコードははみ出してしまう。

f:id:t-hom:20170103182118p:plain

いろいろ試してみたけど結局うまくいかないので、あきらめてそもそも一行があまり長くならないようにコーディングするようになった。
(最近はあまり意識できてないけど。)

でもやってみたらこういう風に読めなくもないので、個人的にはアリかなと思っている。
f:id:t-hom:20170103184713p:plain

↓以下のコードでよく使っている。
thom.hateblo.jp

まぁこんな書き方で「イイね」と思ってるのはひょっとすると全国で私だけかもしれないけど、私は職業プログラマーでない限りコードの書き方は自由だ(そして自己責任だ)と考えてる※ので、「こんなコードはけしからん」などと思っても所詮アマチュアの戯言だと思っていただければ。

※詳細は以下をご参照ください。
thom.hateblo.jp

当ブログは、amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、 Amazonアソシエイト・プログラムの参加者です。