連鎖メソッドで、コードの記述を簡略化しよう
序文
エクセル関数日本語化のインストール方法は、以下の記事を参照してください。
なお、ここで紹介するコードは「エクセルVBA日本語化」ver0.12以上が必要です。
下記URLよりダウンロードされてください。
日本語VBAを作成するには、「標準モジュール」というシートを作成する必要があります。
「標準モジュール」というシートを作成するには、以下の記事を参考にされてくださ。
レッスン
はい。今までの日本語VBAでは、以下のような色塗りをする際に、・・・、

以下のような途中で重複のある日本語VBAを書く必要がありました。
たとえば、「g_道具.セル.選択範囲(選択範囲パターン偶数行).書式」までを2度書くために、コピペをして原始的に対処していました。
1 2 3 4 |
Public Sub 選択範囲の背景色変更オレンジ() g_道具.セル.選択範囲(選択範囲パターン偶数行).書式.背景パターン = 塗りつぶし g_道具.セル.選択範囲(選択範囲パターン偶数行).書式.色 = F_色インデックスからRGB色へ変換(インデックスオレンジ) End Sub |
詳しくは以下の記事を参照してください。
そこで、「連鎖メソッド」という方法を作ってみました。
「連鎖メソッド」とは「チェーンメソッド」とも呼ばれ、メソッドとメソッドがチェーンのようにつながっているメソッドのことを言います。
JavaScriptのjQueryなどでも使用されています。
ちなみに、上記日本語VBAをチェーンメソッドで書くと、以下のようになります。
1 2 3 4 |
Public Sub 選択範囲の背景色_連鎖変更01() g_道具.セル.選択範囲(選択範囲パターン偶数行).書式.背景パターン連鎖(塗りつぶし) _ .色連鎖 (F_色インデックスからRGB色へ変換(インデックスオレンジ)) End Sub |
一行目と二行目は連結されていて、実際は一行であるものとしてエクセルは扱っています。
行末の「_」は、「この行は次行へと続きます」との印です。これがないとVBAはエラーのある行だと見なしてしまいます。
「g_道具.セル.選択範囲(選択範囲パターン偶数行).書式」までを2度書く必要がなくなりました。
ただ、これだけの連鎖だけだといまいちお得な感じがしませんね。
今後もう少し、連鎖できるメソッドを増やしていく予定です。
—
追記:
上記日本語VBAのコードは、少々間違っていました。
正しくは、以下のようなコードになります。
1 2 3 4 |
Public Sub 選択範囲の背景色_連鎖変更01() Call g_道具.セル.選択範囲(選択範囲パターン偶数行).書式.背景パターン連鎖(塗りつぶし) _ .色連鎖(F_色インデックスからRGB色へ変換(インデックスオレンジ)) End Sub |
連鎖メソッドは、実際はVBAの「関数」です。
そして、VBAでは関数を1行に単独で書くことはできないため、行の先頭に「Call」をつけています。
「Call」とは、「(関数を)呼びます」という意味で、コードからエクセルに「これから関数を呼びますよ」と伝えています。
以上、大変失礼致しました。