クラスモジュールの基礎と使い方1

マクロ講座 動画編+記事解説 クラスモジュールの基礎と使い方1回
マクロ講座

動画でExcel クラスモジュールの基礎と使い方1

クラスモジュールの基礎と使い方1

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

マクロ動画 クラスモジュールの基礎と使い方1

クラスやクラスモジュールの作成方法を学ぶ

  1. クラスモジュールは、VBEの挿入メニューからクラスモジュールを挿入します。

    クラスモジュールの基礎と使い方1
  2. クラスモジュールは、プロジェクトエクスプローラからも挿入できます。

    クラスモジュールの基礎と使い方2
  3. つづいて標準モジュールも挿入しておきます。

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

    クラスモジュールの基礎と使い方4
  5. プロパティウインドウからオブジェクト名Class1をgreetingに変更しました。

    クラスモジュールの基礎と使い方5

Excelそれ自体がオブジェクトであり、オブジェクトの集合体

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

    クラスモジュールの基礎と使い方6
  2. オブジェクトブラウザを表示させると、そこには現在のオブジェクトが一覧で表示されます。作成したgreetingがオブジェクトとして記載されています。

    クラスモジュールの基礎と使い方7
  3. そして作成したgreetingをクリックすると、それ自体は入れ物なので何も入っていないことが分かります。

    クラスモジュールの基礎と使い方8
  4. greetingにコードを書いていきましょう。要領はModuleにコードを書くときと同じです。3つのプロシージャを書きました。これはメソッドです。

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

    クラスモジュールの基礎と使い方10

インスタンス化

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

    クラスモジュールの基礎と使い方11
  2. 変数を宣言したら、今度はその変数をセットします。

    クラスモジュールの基礎と使い方12
  3. 変数Msgに対して、メソッドを指定します。

    クラスモジュールの基礎と使い方13
  4. 実行すると、このようにメッセージボックスにこんばんはというメッセージが表示されました。

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

    クラスモジュールの基礎と使い方15
    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
    
  6. 今回は、クラスモジュールの初回ですので、メッセージボックスにあいさつを表示するというかんたんな例を紹介しました。