image

VBAのクラスとは何ですか?

クラスは、作成されるオブジェクトの青写真です。クラス自体は何もしませんが、クラスを使用すると、操作を実行したり、データリソースとして使用したりできる複数の同一のオブジェクトを作成できます。

実生活では、車のモデル(デザインと機能)はクラスであり、車自体はそのクラスのオブジェクトです。クラスでは、車に何が入っているか、何ができるかを定義します。たとえば、車には4つの車輪、5つの歯車、ハンドルなどがあります。これらは属性/プロパティです。

また、前進、後退、方向転換など、車ができることを定義します。これらは車のクラスの機能です。 carクラスを使用して作成されたcarオブジェクトには、これらすべてのプロパティがあります。このクラスを使用して作成された車よりも5つの車輪を持つ車を定義すると、5つの車輪があります。あなたはポイントを取得します。

理論的には十分ですが、VBAでクラスモジュールを使用する方法を見てみましょう。

ExcelVBAクラスモジュールの使用

VBAでの作業中は、Range( “A1″)。selectを使用している必要があります。 Rangeは、VBAで事前定義されたクラスです。 selectは、指定された範囲を選択するRangeクラスの機能の1つです。同様に、DebugはVBAのクラスであり、printとassertはそのメソッドです。ワークシート、ワークブック、範囲などはすべて、サブで使用するVBAクラスです。

image

独自のクラスを作成する

まず、VBAにクラスモジュールを追加する必要があります。Alt+ F11キーの組み合わせを押して、ExcelVBAエディターを開きます。

  • プロジェクトエクスプローラーを右クリックします。カーソルを[挿入]→ [クラスモジュール]に移動します。クリックして。 [挿入]メニューからも同じことができます。

image

※クラスは「クラスモジュール」フォルダに追加されます。デフォルトの名前は、class1、class2などです。プロパティウィンドウからクラス名を変更できます。クラスに「ようこそ」という名前を付けましょう。

image

それでは、クラスにいくつかの属性を追加して作成しましょう。これらの属性を一般に公開したいので、アクセシビリティ演算子* publicを使用しています。

Public name As String

Public var1 As Integer

Public var2 As Integer
  • では、このクラスに関数を追加しましょう。こんにちは!という機能が欲しいです。ユーザーに。これを行うには、サブを追加し、sayHiToという名前を付けます。

Sub sayHiTo(user As String)

name = user

MsgBox ("Hi! " & name)

End Sub
  • モジュールでクラスを使用しましょう。モジュールがない場合は、新しいモジュールを挿入します。サブを書く。サブテストに名前を付けました。

Sub test()

Dim wc As New Welcome 'Declared and initialized Welcome object

wc.sayHiTo ("Jack") 'used sayHiTo method of Welcome Object.

End Sub
  • F5キーを使用してこのサブテストを実行します。 Excelワークブックに「Hi!Jack」というプロンプトが表示されます。

image

どのように機能しますか?

サブテストでは、Welcomeclassのオブジェクト「wc」を作成しました。オブジェクトは、2つの方法でVBAに作成されます。コードを実行すると、TestsubはWelcomeクラスのオブジェクトwcを作成します。このオブジェクトには、Welcomeクラスのすべてのプロパティがあります。 WelcomeクラスのsayHiToメソッドを使用して、ユーザーに挨拶します。

ExcelVBAでのオブジェクトの作成

。 ..インスタント作成インスタント作成では、「new」キーでオブジェクトを宣言しながらオブジェクトを作成します。上記の例では、インスタント作成を使用しています。

Dim wc As New Welcome

{空} 2。遅延作成遅延作成では、最初にオブジェクトのみを宣言します。 「new」キーワードは使用しません。オブジェクトを使用するには、「new」キーワードでオブジェクトを初期化する必要があります。

Sub test()

Dim wc As Welcome

'wc.sayHiTo ("Jack") 'generates error since wc is not initialised yet

'initialising object

Set wc = New Welcome

wc.sayHiTo ("Cory") 'this will work.

End Sub

クラスの変数へのアクセス

上記の例では、クラスにパブリック変数を使用していますが、練習するのは誤りです。クラスでパブリック変数を使用することは避けてください。

ここで問題となるのは、クラスの変数にどのようにアクセスするかです。以前は、サブルーチンを使用して名前にアクセスしましたが、VBAクラスは、クラスのプライベート変数値を体系的に更新および取得するために使用されるプロパティを提供します。プロパティは、プライベート変数を更新およびアクセスするためのサブまたは関数よりも洗練されています。方法を見てみましょう。

クラスプロパティの構文

Private name As String

Private var1 As Integer

Private var2 As Integer

Property Let MyName(nm As String)

name = nm

End Property

Property Get MyName() As String

MyName = name

End Property

モジュールで使用してみましょう。

Sub test()

'creating class object

Dim wc As New Welcome

Dim wc1 As New Welcome



'using properties

wc.MyName = "Exceltip.com"

wc1.MyName = "ExcelForum.com"



Debug.Print wc.MyName

Debug.Print wc1.MyName



End Sub

このテストサブを実行すると、「Welcome」クラスの2つのオブジェクトに対して2つの名前が出力されます。

プロパティがサブおよび関数とどのように異なるか

上記の例では、MyNameプロパティを変数として使用していることに注意してください。 「Name」変数の値は、wc.MyName = “assdf”と記述するだけで初期化されました。このコマンド行は、Property Get MyName()AsStringというプロパティを呼び出しました。最初に行ったように、括弧内に値を渡しませんでした。

同様に、「Name」変数の値を出力するには、commandDebug.Print wc.MyNameを使用しました。通常の変数の初期化と同じくらい簡単ではありませんか?唯一の違いは、プロパティセグメントで多くのことを実行できることです。データの検証、計算、通信などを行うと、ユーザーには結果のみが表示されます。

もう1つの違いは、プロパティの同じ名前を使用してletとget * partを実行できることです。これにより、簡単で混乱が少なくなります。

そうですね、これはExcelVBAのクラスモジュールの簡単な例でした。

これは氷山の一角に過ぎません。このトピックには、後の記事で探求するジュースがたくさんあります。可能な限り最も簡単な方法で、それぞれを1つずつ調べます。私はあなたがこれを理解するのに十分説明できたと思います。このトピックまたはその他のExcelVBAトピックに関して疑問がある場合は、以下のコメントセクションにその旨を記載してください。

関連記事:

`link:/ modules-class-modules-in-vba-insert-a-new-module-from-a-file-using-vba-in-microsoft-excel [MicrosoftExcelでVBAを使用してファイルからモジュールをインポートする] `| VBAを使用して別のファイルからモジュール全体をインポートする方法を学びます。

link:/ modules-class-modules-in-vba-create-a-new-module-using-vba-in-microsoft-excel [MicrosoftExcelでVBAを使用して新しいモジュールを作成する] |モジュールを使用して、VBAで別のモデルを作成できます。これにより、追加のオーバーヘッド作業を最小限に抑えることができます。

link:/ modules-class-modules-in-vba-add-a-procedure-to-a-module-using-vba-in-microsoft-excel [MicrosoftExcelでVBAを使用してモジュールにプロシージャを追加する] |モジュールにプロシージャを追加するには、このVBAコードを自動的に使用します。

人気の記事:

link:/ keyboard-formula-shortcuts-50-excel-shortcuts-to-increase-your-productivity [生産性を高めるための50のExcelショートカット] |あなたの仕事をより速くしてください。これらの50のショートカットにより、Excelでの作業がさらに高速になります。

link:/ forms-and-functions-introduction-of-vlookup-function [ExcelのVLOOKUP関数] |これは、さまざまな範囲やシートから値を検索するために使用される、Excelの最も使用され人気のある関数の1つです。 link:/ Tips-countif-in-microsoft-excel [COUNTIF in Excel 2016] |この驚くべき関数を使用して、条件付きの値をカウントします。

特定の値をカウントするためにデータをフィルタリングする必要はありません。ダッシュボードを準備するには、Countif関数が不可欠です。

link:/ excel-formula-and-function-excel-sumif-function [ExcelでSUMIF関数を使用する方法] |これは、ダッシュボードのもう1つの重要な機能です。これは、特定の条件で値を合計するのに役立ちます。