VBAをマスターするにはオブジェクト指向の理解が必要
久しぶりにVBAを触ってみたら、以前書いたときとコーディングの感覚が大きく違っていたので、そのことを書きます。
VBAとは
VBAはVisual Basic for Applicationsの略で、MicrosoftのExcelやWordなどのOffice製品で動作するマクロ言語という種類のプログラミング言語です。
C言語を習いたてのとき挫折したVBA
VBAを書いた一番最近の記憶は、大学一年生でC言語のプログラミングを習いたてだったころだと思います。
他の大学に通っている高校の時の友達が、大学でVBAを習っているという話を聞いて、自分も少しやってみようかなと思って少しだけ触ってすぐ挫折したのを思えています。
VBAの基本的な文法が、C言語と大きく異なること、そしてオブジェクト指向の考え方がまだよく理解できてなかったからだと思います。
オブジェクト指向を学習した今は、VBAを比較的、楽にプログラミングできるようになりました。
VBAとオブジェクト指向
オブジェクト指向とは
オブジェクトを中心に考えるプログラミングの手法です。
説明するとかなり長くなってしまうので、詳しくはWikipediaを見てください。
オブジェクト指向プログラミング - Wikipedia
VBAはかなりオブジェクト指向な言語です
VBAがオブジェクト指向型言語であるかということについては、細かいところで議論があるようですが、個人的にはVBAはかなりオブジェクト指向的なコーディングスタイルだと思います。
VBがオブジェクト指向言語でない理由 -一般的にVBはオブジェクト指向で- Visual Basic(VBA) | 教えて!goo
なのでオブジェクト指向でのプログラミングを一度経験しておいた方が、より理解を深められ簡単にVBAでコーディングできるようになると思います。
実際に自分もC#とJavaでオブジェクト指向を勉強した今の方がVBAでのコーディング能力が高くなっていると思います。
なんとなくこんなプログラムを書いてみました
Sub Macro1() ' ' Macro1 Macro ' For i = 1 To 10 Cells(i, 1).Value = i Next ' Application.Goto Reference:="Macro1" End Sub
セルA1からA10まで1から10を表示するプログラムなのですが、はじめfor文を次のように書いてしまったため
『実行時エラー '1004' アプリケーション定義またはオブジェクト定義のエラーです。』と怒られてしまいました。
For i = 0 To 10 Cells(i, 1).Value = i Next
C言語の配列操作のためのfor文のように0から指定してしまっています。
そうです。ExcelにはA0というセルはありません。
ないはずのセルに代入をしろと言われ、Excelはエラーを吐いてました。
かなり初歩的なミスですが、新しくプログラミング言語を始めるときには、このようなちょっとした違いを覚えることが大事だと思います。
気づけて良かったです。