category name  »  page title date

VBA tips へようこそ!

Excel のプログラミングを VBA を用いて行う際に、"こういう場合はこんな風にすればうまくいく" といった小技を、備忘録をかねて逐次アップします。
具体的なツールを自分向けにいろいろ作成しながら、発見したり考えついたりした小技です。同じことを実現するのに、別のもっとエレガントな方法があるかもしれませんが、そういうご指摘をいただければ有難いです。

なお、コードは Microsoft Office Home and Business 2016 で作成。あまりアクロバチックなことはやっていないので、以降のバージョンで利用できると思いますが、あくまで自己責任で。

ご連絡は当面、左下のメイル・アイコンで。そのうち、フォーム・メイルをつけるかもしれません。



<お断り>


VBA には、プロシージャとして Sub プロシージャと Function プロシージャがあります。これらは、記載のしかたも呼び出し方も微妙に異なります。ある人は、プロシージャそのものがサブルーチンと同義であると解説しています。また、人によると Sub プロシージャを「サブルーチン」、Function プロシージャを「関数」と表現する場合があって、実に紛らわしい。さらに、”マクロ”という呼び名もあって、これはどうやら明示的な引数をもたない Sub プロシージャのことを言うらしい。

Cに親しんだ身には、どちらも「関数」として統一的に扱えばよかろうと思うのですが、これを区別する理由がわかりません。おそらく、こちらのような初心者には窺い知れないきちんとした訳があるのでしょう。
これらと似たものにプロパティがあります。言わせてもらうと、Get プロパティは関数そのものだし、Let または Set プロパティはサブルーチンそのものとしか思えないので、これをプロシージャと区別している理由もよくわかりません。

よくわからないので、きちんとした定義に従った用語使いがやりにくい。それで、このサイトではそのあたりがルーズになりがちであることをお断りしたいと思います。
プロシージャやプロパティまでまとめて「関数」と言ってみたり、「サブルーチン」と言ってみたり、あるいは単に「ルーチン」と呼んでみたり、ときにはきちんと「プロシージャ」と呼ぶかもしれないし、「マクロ」というかもしれませんが、使い分けにそれほど意味はありません。この混乱はひとえに小生の不明のためでありますが、どう呼んだところで誤解を生むようなことにはならないと思いますので、気の向くままとしました。気持ちの悪い方もおられるかもしれませんが、ご寛容のほどをお願いします。

このほか、Let と Set とか、IsEmpty(A) と A Is Nothing とか、なんでこう表記を区別しているのか凡人を悩ます件がいろいろありますが、とりあえず長いものに巻かれてしまおうと思います。