Excel VBA > Excel上級:マクロ > Excel VBAでできることを改めて考える
このエントリーをはてなブックマークに追加

Excel VBAでできることを改めて考える

「Excel VBAでいったい何ができるのか」という問いに対する答え

よく「Excel VBAを使うと何ができるのかイメージが湧かない」という質問を受けます。そこで弊社ではホームページにも説明している通り、いくつかの考え方を示していますが、それでも「わかったような・・・わらからないような・・・」という回答もきます。この問いは非常に難解であり、回答に非常に難しさを感じます。そこで「VBAで何かができるのか」を改めて考えてみたいと思います。

具体例提示の限界

当サイトでもそうですが、何らかの例を挙げて説明するのは具体的で分かりやすい一方で、その例に馴染みがないと質問者は理解が遠のくようです。
Excelでの請求書作成で「時間がかかる」、「コピペが面倒」とか具体的な作業をしている人にとっては、Excelで作成した請求書作成システムの説明がハマるかもしれません。
しかし、営業の進捗管理をしている人にとってはピンと来なかったりします。また、「形」で説明すると、それしかできないというか、そこから派生するのが難しくなり「VBAは請求書システムが作れる」という限定的なイメージになってしまう場合もあるようです。

何ができるか?・・・それは「あなた次第」という回答

ある種、逃げ的な言い方でもありますが、個人的にはこの回答が一番的を得ているのではないかと思うようになりました。
というのも、「何ができるのか」という質問をする人のレベルによりそもそも答える回答が変わってきます。
マクロもある程度使いこなした人が「何ができるのか」というのと、マクロの記録の存在すら知らない人に同じ質問を聞かれるのでは、おのずと回答が変わります。
答える方としては、相手のレベルによって変えることも可能ですが、この「レベル」の捉え方も実は曖昧な部分だったりします。
だとするならば、誰にでも当てはまるような回答をすれば、やはり「あなた次第」しかないようにも思えますし、あるいは下記で説明する内容からも「あなた次第」しかないのです。。

「木を見て森を見ず」という回答は?

下記を見てください。これは単純なコードです。このコードはセルのA1に「ABC」を表示します。

Range(“A1”).Value = “ABC”

例えば、この説明だけで「何ができるのか」を推し量るのはほぼ絶望的でしょう。
同様に下記は「シートを追加」するときのコードです。

ThisWorkbook.Worksheets.Add

上記のコードに比べれば、多少は広がり感があるかもしれません。しかしこれだけ見ても「ふ~ん、それで?」となるでしょう。
VBAにはループという仕組みがあります。例えばシートを下記のようにすれば、100シートが瞬時にできます。

あるいは、100シートを追加しながら、かつシート名も変更します。

Sub テスト()

    Dim i As Integer
    Dim Wsh As Worksheet

    For i = 1 To 100
        Set Wsh = ThisWorkbook.Worksheets.Add
        Wsh.Name = i
    Next i

End Sub

こうすることで上記よりさらに広がりをもったと思います。でも、「何ができるか」という視点で見ると、全体のごく一部しか見ていないことになり(質問者にとっては)回答にすらなっていない場合もあります。
しかし実際には
・プログラムから「セルに文字を入力させる」ことができる
・プログラムから「シートを追加させる」ことができる

という2つの「できる」があります。しかし経験的にこれらは質問者には「やや弱い」回答にしかなりません。

そもそも「1行のステートメントでは大きな変化がない」というVBAの仕様

恐らく他のプログラムも同様でしょうが、VBAでは上記のように色々な「できる」のコードのつなぎ合わせです。各コード自体がそれぞれの意味を持っていますが、それらはどちらかというと最小の役割(機能)しかもっていません。
そのため、プログラマはそれらのコードを1つずつつなぎ合わせていきます。そうすることにより「一つの形」になっていきます。そしてそれはどんな形になるのか・・・それは「あなた次第」ということになります。
つまり「VBAで何ができるのか」を知りたければ、質問者自身が各コードの役割を理解することが、より(質問者が求めている)回答に近づくのではないかという矛盾めいた方向になってしまうのです。

VBA「○○できるコード」のつなぎ合わせるパズルのようなもの

上記を踏まえると、VBAはこの「できる」という単体コードをつなぎ合わせるパズルのようなものです。ただしこのパズルは、始める段階で「どんな形にするのか」を決めておく必要があります。
が、ここにも矛盾した点が発生します。質問者は「VBAはどんな形にできるのかが分からない、だから何ができるのか知りたい」からです。しかしながらこの点については、やはり例示を見たりして勉強や学習以外にない気がします。
何ができるのかの詳細を知りたければ知りたいほど、「各コードで何ができるのかを知っておく」ということがどうしても必要になります。
私個人の例でこれは例外的だと思いますが、何でもない時に「VBA辞典」のような書籍をよく読んで感動していました(笑)。しかしこれで各コード(プロパティ、メソッド)で何ができるのかを知りました。するとExcel全体で何ができるのかを分かるようになりました。

VBAの勉強は人によってやり方は様々です。TIPS系の書籍なども文字通り何ができるのかが分かりますし、あるいは「何ができるのか」というよりもまずは自身で「○○作ってみよう」という発想もありだと思います。そしておそらくは少しずつかもしれませんが、自身の目線で「何ができるのかが分かってくる」を理解できてくるのだと思います。

カテゴリ:Excel上級:マクロ