Excel VBAの最初の難関

0.前置き

最近ちょっとExcel VBAの勉強を始めました。意外に楽しかったので、けっこうもくもくとやっている。
(なんでいまさら…って言われそうですけど)
最初にはまったことをもろもろ書いておきます。あと、へ~と思ったこともメモります。

1. どこに開発環境があるか分からない。

初期設定のままであれば、変更する必要があります。
Excel起動→ファイル→オプション→リボンのユーザー設定まできて、下記のチェックボックスをオンにします。


これでリボンメニューに「開発」というタブが現れます。
「開発」タブのVisualBasicを起動すれば、VBA用の開発環境を開くことができます。

2. VBA用の開発環境のおすすめ初期設定。

ググルとこの開発環境は、VBE(Visual Basic Editor)というらしいです。本当かな?
VBEを使い始める時にしておくと良い初期設定を書きます。
VBEを起動後、設定画面を開きます。ツール→オプションです。
オプションの以下を変更。

  • 変数の宣言を強制するにチェック→モジュールファイル追加時に「Option Explicit」という宣言を自動でいれる設定です。
  • キーワードの色を変える→初期設定は見にくい色なので、色を変更。
  • (気分で)フォントを変える。→ただ、Consolasの日本語版がないのがものすごく悲しい…。

3. いざ編集を始めるとなぜか1文字打つごとに「確定」してしまう。

これははまってしまったポイント。
他のExcelのCOMアドインとの相性問題で、タイトルの不具合が起こります。
たとえば、以下のような現象が当てはまります。

  • スペースをいれても、自動でバックスペースされてしまう。
  • 全角日本語を入力しようとすると、1文字入力するたびに「確定(Enterキーを押したような動作)」してしまう。

回避策があったので、リンクをはっておきます。
VSTO の COM アドインが原因で、VBE で、一文字ずつ確定されてしまう。

4. VBAには種類がある。

VBAは作成するアプリケーションの種類で2種類に分類できます。

  • アプリケーションレベルのカスタマイズ – ようはアドインのことです。Excelのアプリケーション自体の機能拡張。
  • ドキュメントレベルのカスタマイズ – 特定のBookやWorksheetに紐づく機能開発です。私が最近やっているのもこれ。

説明はここが詳しいです。
10 行でズバリ!! [VB] Office – アプリケーション レベルの拡張機能開発 (アドイン開発)

5. Visual Studioを使って作りたい。

ここはまだ勉強不足ですが、分かっていることを書きます。
VBEをそのままVisual Studioに置き換えて開発するのは無理ですが、相当するより強力な開発方法があります。
よくOffice開発って言われているもので、
Visual StudioのプロジェクトテンプレートだとVisual C#(or VB)→Office→2010→Excel2010ブックになります。
WinFormやWebFormのアプリケーションを作成するようにExcelのWorksheetにドラッグアンドドロップしながら開発ができます。
ただ作成されるアプリケーションはクリックワンスによる配布になるので…。
配布の面ではVBAの気軽さがちょっと損なわれるかなっていうのが難点です。
このあたりのハードルが現場の運用でカバーできるのであれば、私は絶対こっちが良い。開発ツールの充実度が違います。

6. 最初に勉強する場所はどこが良い?

書籍やサイトは、本当に山のように情報があります。
おすすめを2点。

7. 最後に

もう枯れている技術であるVBAを今年度に入ってはじめて触っています。
会社で達人な人が多くてびっくりしました。
必要に駆られて勉強し始めましたけど、最初のハードルを越えれば、なかなかいけるかも!
今年の第一四半期に習得した言語は、「VBA」ですって言えるようもう少し頑張ります。