
動画でExcel クラスモジュールの基礎と使い方1
ある程度 VBA の経験を積んでくるとクラス、クラスモジュールあるいはオブジェクト指向、などといった言葉が目につくようになります。
しかしこれらについて詳しく書かれている参考書はありません。
なぜでしょう。それはクラスを使わなくても、そこそこVBAが使えるからです。
ただそれにも限界があり、大きく複雑なプログラムになればなるほど、見づらくわかりにくくなってしまいます。
解決するためには、クラスモジュールを使うという方法が必要です。
次は上級者を目指す者として、自力で調べ考えコーディングしてみる試行錯誤が必要となります。
この動画と解説がその理解の手助けをすることができることを願っています。
【コンテンツ】
1.クラスモジュールの概要
2.クラスモジュールを追加する
3.クラスモジュールのサンプル
クラスモジュールは、VBEの挿入メニューからクラスモジュールを挿入します。

クラスモジュールは、プロジェクトエクスプローラからも挿入できます。

つづいて標準モジュールも挿入しておきます。

標準モジュールとクラスモジュールが作成されているのを確認できます。

プロパティウインドウからオブジェクト名Class1をgreetingに変更しました。

オブジェクトとは操作の対象となるものであり、データや命令をセットにしたものです。greetingというクラスをつくることで、新しい自分用のオブジェクトを作成できます。

オブジェクトブラウザを表示させると、そこには現在のオブジェクトが一覧で表示されます。作成したgreetingがオブジェクトとして記載されています。

そして作成したgreetingをクリックすると、それ自体は入れ物なので何も入っていないことが分かります。

greetingにコードを書いていきましょう。要領はModuleにコードを書くときと同じです。3つのプロシージャを書きました。これはメソッドです。

Sub morning()
MsgBox "おはよう"
End Sub
Sub after()
MsgBox "こんにちは"
End Sub
Sub night()
MsgBox "こんばんは"
End Sub
オブジェクトブラウザを見てもらうとグリーティングというクラスの中に、 メンバーとして、 after,morningとnight この三つがメソッドとして登録されたことが確認できます。

メンバーをクラスに登録しただけではまだ使えません。」そのためには標準モジュールの中に、サブプロシージャを使ってインスタンス化という操作をしてやる必要があります。 変数を宣言して、その型を今作成したグリーティングというクラスで指定します。

変数を宣言したら、今度はその変数をセットします。

変数Msgに対して、メソッドを指定します。

実行すると、このようにメッセージボックスにこんばんはというメッセージが表示されました。

少しプログラムらしくするために、インプットボックスを表示してユーザーに時間を入力してもらいます。 ユーザーが入力した時間をセレクトケースで判断してメッセージを表示するというコードに書き換えてみます。

Sub aisatu()
Dim msg As New greeting
Dim Ans As Long
Ans = Application.InputBox(Prompt:="今何時ですか?24Hで答えてね", _
Title:="時間の入力", Type:=1)
Select Case Ans
Case Is > 17
msg.night
Case 12 To 17
msg.after
Case Else
msg.morning
End Select
End Sub
今回は、クラスモジュールの初回ですので、メッセージボックスにあいさつを表示するというかんたんな例を紹介しました。