見出し画像

【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にシフトしていかないかなぁ・・・