非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

VBAでオブジェクト指向プログラミング

      2018/06/29

JavaやC#ほど使い勝手がいいわけではありませんが、VBAもオブジェクト指向プログラミングが可能です。

通常、ExcelマクロはVisual Basic Editorの「標準モジュール」というところに記述しますが、今回は「クラスモジュール」というところに書きます。

広告

まずは、VBAエディタで[挿入]-[クラスモジュール]を選択すると、クラスエディタが現れます。ここでクラス名を変え方が良いでしょう。デフォルトは「Class1」という名前になっていますが、機能がわかるように命名してください。今回は「TestClass」という名前に変えました。

わかりやすくシンプルなコードを紹介。JavaかC#を触ったことがあればだいたいわかるかと思います。これでジェネリックコレクションが使えれば最高なんですが・・・。

【クラス側のコード】

Private 名前 As String
Private 年齢 As Integer

Public Function setting(name, age)
  名前 = name
  年齢 = age
End Function

Public Function getName()
  getName = 名前
End Function

Public Function getAge()
  getAge = 年齢
End Function
 

 

次にクラスを使う側のソースコードです。こちらは標準モジュールに書きます。

Sub テスト()
  Dim 太郎 As TestClass
  Set 太郎 = New TestClass
  太郎.setting "山田太郎", 22 '引数はカッコで括らない。
  MsgBox (太郎.getName)
  MsgBox (太郎.getAge)
End Sub
 

 

■関連記事■

標準モジュールでもクラスっぽいことができます。

 

広告

 - Excel, VBA