クラスモジュールの基礎と使い方1
動画でExcel クラスモジュールの基礎と使い方1
クラスモジュールの基礎と使い方1
ある程度 VBA の経験を積んでくるとクラス、クラスモジュールあるいはオブジェクト指向、などといった言葉が目につくようになります。
しかしこれらについて詳しく書かれている参考書はありません。
なぜでしょう。それはクラスを使わなくても、そこそこVBAが使えるからです。
ただそれにも限界があり、大きく複雑なプログラムになればなるほど、見づらくわかりにくくなってしまいます。
解決するためには、クラスモジュールを使うという方法が必要です。
次は上級者を目指す者として、自力で調べ考えコーディングしてみる試行錯誤が必要となります。
この動画と解説がその理解の手助けをすることができることを願っています。
【コンテンツ】
1.クラスモジュールの概要
2.クラスモジュールを追加する
3.クラスモジュールのサンプル
マクロ動画 クラスモジュールの基礎と使い方1
クラスやクラスモジュールの作成方法を学ぶ
-
クラスモジュールは、VBEの挿入メニューからクラスモジュールを挿入します。
-
クラスモジュールは、プロジェクトエクスプローラからも挿入できます。
-
つづいて標準モジュールも挿入しておきます。
-
標準モジュールとクラスモジュールが作成されているのを確認できます。
-
プロパティウインドウからオブジェクト名Class1をgreetingに変更しました。
Excelそれ自体がオブジェクトであり、オブジェクトの集合体
-
オブジェクトとは操作の対象となるものであり、データや命令をセットにしたものです。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
-
今回は、クラスモジュールの初回ですので、メッセージボックスにあいさつを表示するというかんたんな例を紹介しました。