【VBA】はじめてのVBA【マジで?編】
はじめまして!ヌルポです。
今回は、ほぼ未経験のVBAを業務でぶっつけ本番している人間の末路を記していきます。
■VBAとはなんぞ?
わからない方は、天下のMS様がリファレンスを公開しているので、さらっと見てみるといいと思われます。
★本題★
■それって、Excelでする?
まず最初に業務で思ったのが、
・・・「それは、Excelで行う分野なのだろうか」
という感想です。
確かに、Excelは万能ですが、500件や数千件のレコードを処理する作業をExcelで行っているようです。どう考えても、AccessDBを利用した方がいいと思うのですが、そこは色々な兼ね合いで不可の模様。
■インクリメントやデクリメントが無い!
プログラムの構文でヌルポが最初に確認するのが「IF」「FOR」「演算子」です。
VBAでは下記のように記述するようです。
Sub Test()
Dim i As Long
i = 1
Dim i_End As Long
i_End = 100
For i = i To i_End
Debug.Print i & " だぞ★"
Next
End Sub
自分が最初に書いたテストコードは下記
Sub Test()
Dim i As Long
i = 1
Dim i_End As Long
i_End = 100
For i = i To i_End
Debug.Print i & " だぞ★"
i++
Next
End Sub
・・・VBAを知っている人が見ると、「は?」という記述ですが、この当時FORの初期値を代入した変数が「Nextで勝手に増分」するとは考えていなかったため、ひどい結果が出力されました。
■そのほかにも引っかけが・・・
利用していくと実感しますが、処理が本当に不安定。
Workbooks.OpenなんかをForで回しまくると、納品先の処理環境ではまともに動かないケースが多いです。素直にExcelをエンドユーザーのフロントとして、内部のデータはAccessで持ってた方が賢いと勝手に思うのですが、まだVBAになれていないので、余計なことに突っ込まないようにしてます・・・
■VBA(IDE)の使い勝手はあんまし・・・
Microsoft OfficeにはVBAを開発するための、IDEが備わっています。しかし、こいつが使いづらいことこの上ない。変数の自動補完くらいしてくれてもいいと思うのですが、MSさんどーでしょうか笑
個人的にコーディングするときはAtomEditorを愛用しているので、VBAの構文認識をインスコして利用しています。
【終わり】
歯切れの悪いところで強引に切ってしまいますが、日本企業のExcel依存体質の現実を垣間見た気がします。Excel方眼紙や、全角数字大好きおじさん・・・
一番やめてほしいのが、IFERRORを利用しないで関数をぶち込んだままにしている「えくせるでーたべーちゅ」ですね。(Book.Sheets.Cells略).End(xlDown).Rowで探しに行くとえらい目に遭います。
あ~GoogleのSpreadSheetにシフトしていかないかなぁ・・・