ExcelVBAをかじる

前々からExcelVBAを覚えたいなぁと思っていたのだけれども、ナイスタイミングでちょっとバイトで頼まれごとをしたのでVBAで書いてみる。

ExcelVBAというのは、簡単にゆーとExcelで定型処理を自動化するマクロのことで、セルの書式変えたり色変えたりとか、余白調整して印刷とか毎回完全に同じ処理なら、Excelのツール→マクロ→マクロの自動記録を使うと、一連の操作を記録して煩雑な定型処理をボタン一発で実行できるようになる便利機能。マクロはなんか難しそうというイメージあるけど、実は完全に定型処理だけならコーディング不要。もうちょい条件判断処理とか繰り返し処理を加えようとするとExcel付属のVisual Basic Editorでコードを編集する必要あり。

Excelに開発環境がデフォでバンドルされているというのはよく考えればおそろしいことですねぇ。インテリセンスまで付いているだなんて、それなんてVisualStudioヽ(;´・ω・)ノ?わかんないExcel固有操作はマクロの自動記録でわかるし、インテリセンスでコード補完するし、実行せずとも編集しながら行単位でスクリプトの構文チェックが行われるので文法間違いもすぐ気付くし、けっこうカンで書けたりする。こんなリッチな開発環境を標準で付けるからOfficeが高いんじゃないかと。使ってる人何%いるんだよーwwほんと、表計算ソフトってレベルじゃねぇぞ

ExcelなんてたいていのPCに入ってるので、CでHello,world!教えるよりも、こーゆーの教えてくれた方がタメになるよねぇという気がしないでもない。gccコンパイラなんて普通のPCに入ってないですよ?

ExcelVBAでHello,World的サンプルを書くとすれば、VBエディタで挿入→標準モジュールでモジュールを新規作成して、

Sub Test()
    Selection.Value = "Hello, VBA World!"
End Sub

てなかんじで、選択中のセルにテキストを表示できる。まぁ他の文法は各自入門ページでも読んでくれ。For〜Nextとか書くと、なんか昔ポケコンでやってたN88BASICっぽい。同じBASICといえど、VBAオブジェクト指向な全然別言語なんだけど構文は踏襲してるので、配列の扱いとかもなんかちょっと雰囲気が似てる。

宣言不要で変数が使えたり、Variant型というなんでも型があったり、goto文が使えたり、スクリプト用にはこれぐらい適当なぐらいの言語仕様で十分だなー。そんな長いの書かないので厳密な型チェックとか美しさとか不要。実に実用的。なぜかcontinue文ってないのねぇ。それだけ残念。