VBA性能向上委員会

VBAプログラミングの実行速度に関して、より速い性能を求めて徹底検証をします。


HOME > VBA入門 > VBAとは

VBAとは

VBAとは、Visual Basic for Applicationの略称です。

Microsoft Officeに標準搭載されている言語のことで、ルーチンワークをボタンひとつでこなすことができます。


具体的な例を挙げると、

『営業日に9時~18時までが入力済みである、来月分の勤務表を作成』したり、

『エクスプローラ上にあるExcelファイルのシート名を一覧表示』したり、

『Wordファイルに書かれた表をExcelファイルに転記』したりできます。


そのほかにも、VBAではいろいろなことができます。

私は、VBAにはできないことはない※VBAにもできないことはあります。
オーバーロードや、パッケージ化などはできません。
ただ、あくまでそれは開発者からの目線であり、使用者の要件を満たすことができないわけではありません。
ここでは、使用者の要件を満たす、という観点で、できないことはないという表現を使っています。
と思っています。


VBAをうまく使いこなせば、あなたの一日の仕事がボタンひとつで終わります。

次に、VBAについてのメリット・デメリットを書いておきます。



VBAのメリット

VBAのメリットはいくつかありますが、代表的なものを挙げます。

  • 開発環境が簡単に準備できる。
  • ExcelやWordを使った仕事を早く終わらせることができる。
  • 他の言語と比べ、習得が楽である。


開発環境が簡単に準備できる。

開発環境は、Microsoft Officeをインストールするだけです。

仕事でPCを使う人の中で、Officeを使わない人はほとんどいないはずです。

使わないという人は、その仕事においての専用のアプリケーションのみを使うだけであったり、エクセルって何?※Microsoft社が開発した、表計算ソフトですよ。
本サイトは、えくせるの説明は割愛できる人向けのサイトですよ。
といったライトユーザーのはずです。


ですので、普通に考えれば、もう今の時点で環境は整っているはずです。

整っていない人は、早急にMicrosoft Officeをインストールしましょう。


ExcelやWordを使った仕事を早く終わらせることができる。

いやいや、ExcelやWordだけでなく、PowerPointやAccessも簡単になります。

書類や表、プレゼンの資料が早く作成できるようになれば、必然的に資料の質を高める時間を増やすことができます。

願ったり叶ったりであると言えます。


他の言語と比べ、習得が楽である。

VBAは、Visual Basicという言語がベースとなっています。

Basicと言われているくらいなので、簡単です。


新人のSE・PGは、VBAをやっておくべきです。

プログラミングからほど遠い職業の人でも、VBAは敷居は高くないので、知るべきです。


VBAは楽な言語・楽になれる言語です。



VBAのデメリット

VBAのデメリットもいくつかあります。代表的なものを挙げます。

  • 処理速度が遅いと思われがちである。
  • VBAプログラマーはレベルが低いと思われがちである。
  • オブジェクト指向プログラミングがやりにくい。


処理速度が遅い。

これはVisual Basicにおいて常日ごろ言われていることでもあります。

しかし、VBAはそれほど遅くありません。

ExcelやWordの機能※例えばフォント変更や、数式の再計算など。は速度的に優秀なものが数多く存在します。


実はこのサイト、VBAの性能を上げるためのサイトですので、次のページを見れば解決します。

VBA性能徹底検証へ


VBAプログラマーはレベルが低いと思われがちである。

実に残念なことなのですが、あながち間違っていません。

私は、その原因は2点あると思っています。


ひとつは、Visual Basic経験者の中で、VBA独自の機能を無視してプログラミングしている人がいるためだと思われます。

結果、VBAの特性を活かせず、遅い上にメンテナンスがしづらいプログラムになっているため、レベルが低いと思われがちなのだと考えます。


またもうひとつは、マクロの記録※Microsoft Officeには、自分で実行した手順を記録して、ソースコードに起こしてくれる便利な機能が備え付けられています。に頼りすぎている人がいるためだと思います。

マクロの記録は確かに便利なのですが、生成されるソースコードは、はっきり言って使い物になりません。

それを何も考えずそのまま使いまわしている人がいるため、レベルが低いと思われがちなのだと考えます。


まぁ、このサイトを見て勉強すれば、大丈夫でしょう(笑)


オブジェクト指向プログラミングがやりにくい。

もともとVisual Basicはオブジェクト指向ではありません。

なので仕方のないことではあります。

一応、クラスは作れるのですが、継承※既にあるクラスをもとにして、その特徴を引き継いだクラスを作ること。であったりオーバーロード※ひとつのクラスの中に、名前が同じで引数が違うメソッドを作ること。であったりなんてものはできません。