プロパティの作成と操作ができます。プロパティを作成することができます。ステートメントを使用します。SubやFunctionと同じようにPropertyプロシージャと呼びます。Propertyプロシージャは、プロシージャを含むモジュールのプロパティになります。そもそもプロパティとはそもそもプロパティとは何か、これについて簡単に説明しておきます。オブジェクトの持つ属性を表すデータになります。プロパティは、値の取得と、値の設定、この二つの機能があります。セルの持つ値や書式は、これらは全てセルのプロパティです。Rangeオブジェクトのプロパティ一覧エクセルの基本である、Rangeオブジェクトのプロパティの一覧です。太字リンク付きは、詳細解説ページ、または、応用したVBAコードがあるページにリンクしています。範囲の左上隅のセルに関連付け...VBAで記述している多くの部分はプロパティになります。オブジェクトとプロパティの真実オブジェクトとプロパティについて、解説をします。対象は、VBA中級以上になると思いますが、初級の方でも、VBAって奥が深いんだなーと感動位は出来ると思います。役には立たないかもしれませんので、あしからず。VBAでプロパティを作成するステートメントVBAでは、以下の3種類のステートメントが用意されています。Getプロパティの値を取得するプロシージャです。取得とは、クラスを使う側(例えばオブジェクトを使う標準モジュールのプロシージャ)から見て取得ということです。Range("A1").ValueこのValueプロパティがGetです。Letプロパティの値を設定するプロシージャです。設定とは、クラスを使う側(例えばオブジェクトを使う標準モジュールのプロシージャ)から見て設定ということです。100このValueプロパティがLetです。Setプロパティのオブジェクトを設定するプロシージャです。オブジェクトの場合は、Letではなく、Setになります。LetとSetは、対象が基本データ型(プリミティブ型)かオブジェクトかの違いになります。基本データ型(プリミティブ型)の場合はLet、オブジェクトの場合はSetを使用します、Get、Let、Setは同一プロシージャ名を使う事が出来ます。通常は、GetとLetまたはGetとSetを同一名にしてペアで作成します。値の設定と取得を同じプロパティ名にすることで使いやすくできるという事です。RangeのValueプロパティには、GetとSetがあるので、設定と取得が同じValueで使えています。読み取り専用プロパティGetプロパティのみのプロパティになります。RangeのAddressプロパティは設定できません。Getのみの読み取り専用プロパティということです。読み取り専用プロパティなので、値を設定することはできません。書き込み専用プロパティLetまたはSetだけのプロパティになります。書き込み専用のプロパティなので、値を代入(=代入式の左辺に)することはできません。書き込み専用プロパティを作成することはできますが、実際に使われることは滅多にありません。このPropertyプロシージャは、すべてのモジュールにある他のすべてのプロシージャからアクセスできることを示します。Privateステートメントを含むモジュールで使用されている場合、このプロシージャはプロジェクトの外部では使用できなくなります。このPropertyプロシージャは、このプロシージャが宣言されたモジュール内にある他のプロシージャからのみアクセスできることを示します。モジュール内でのみ使用します。このPropertyプロシージャは、プロジェクト全体で参照可能ですが、オブジェクトのインスタンスのコントローラーからは参照できません。このPropertyプロシージャのローカル変数が呼び出し間で保持されることを示します。このPropertyプロシージャの外側で宣言された変数は、このプロシージャ内で使用されていても、Static属性の影響を受けません。このPropertyプロシージャの名前です。標準の名前付け規則に従ってください。Setプロシージャは同じ名前にすることができます。このPropertyプロシージャの呼び出し時に渡される引数を表す変数のリストです。複数の引数は、コンマで区切られます。プロパティに割り当てる値またはオブジェクト参照を格納している変数です。プロシージャの呼び出し時に、この引数は呼び出し元の式の右辺に置きます。Getプロシージャの戻り値の型と同じにする必要があります。]引数の詳細については以下を参照してください。第107回.プロシージャの引数Subプロシージャー、Functionプロシージャーにおける、引数リストの指定について説明します。引数は、呼び出し先のプロシージャーに渡すデータを指定するものです。Callステートメントでプロシージャーを呼び出すときに指定する引数を、呼び出される側のプロシージャーで受け取る記述についてのVBA記述の説明になります。Let|Set式の右辺にはOptionalは指定できません。Getプロシージャの引数と同じデータ型にする必要があります。ステートメント)の左辺でしか使用できません。ステートメントでは、引数を少なくとも1つ定義する必要があります。Public、Private、、Friendを省略した場合は、Propertyプロシージャは既定のPublicになります。Staticが使用されていない場合、ローカル変数の値は呼び出し間で保持されません。Propertyプロシージャは、別のPropertyプロシージャ、Subプロシージャ、Functionプロシージャの内側で定義することはできません。Propertyステートメントにより、Propertyプロシージャは即時終了します。プログラムの実行は、そのPropertyプロシージャを呼び出したステートメントの次のステートメントから続行されます。Propertyステートメントは、Propertyプロシージャ内の任意の場所にいくつでも配置できます。モジュールでのみ使用できます。Friendプロシージャは、プロジェクトに含まれるどのモジュール内のプロシージャからでもアクセスできます。ライブラリには表示されません。Friendプロシージャは、遅延バインディングもできません。Propertyシートモジュールで使用します。シートモジュール内では、自身のシートオブジェクトをMeで参照できます。シートモジュール:名前を設定/取得します。Property本来のNmaeプロティとは別にName2プロパティを作成しています。取得/設定する時に、LCaseで大文字変換しています。上記では、シートモジュールでの使用例を掲載しましたが、Propertyが最も多く使われるのはクラスになるでしょう。クラスでの使用例は、以下を参照してください。Propertyプロシージャの実践例VBAクラス入門:クラスとは?オブジェクト指向とは?VBAを覚えて、いろいろ作りながらネットで調べたりしていると、クラスとかオブジェクト指向といった言葉に出くわします。VBEの「挿入」の一番下にある「クラスモジュール」は気になっていたかもしれません。このクラスモジュールを使ってクラスを作ります。クラスを使った全ブック(他ブック)のイベント補足VBAでイベントを使う場合は、通常はイベントが発生するオブジェクト(ブックやシート等)のモジュールに記載します、つまり、各ブックの中にマクロを入れなければなりません。開いている全ブックまたは、他の特定のブックのイベントを処理するには、WithEventsキーワードを付けた変数宣言を使います、クラスを使って全ブックまたは他ブックのイベントを補足する方法につ...VBAクラスの作り方:列名の入力支援と列移動対応クラスを使う良さとして、入力支援が使えてコーディングが楽になるという利点があります、列番号をクラスに持てば、列名が候補表示されて非常に便利です。これを実装するには、かなりの手間がかかります。クラス作成に手間をかけて、その後を楽にするということになります。VBAクラスの作り方:列名のプロパティを自動作成するクラスに列名のプロパティを作成することで、入力支援が使えてコーディングが楽になりますが、列数が多くなればVBAの記述量が増え、コーディングが大変になります。入力支援が使えるのは良いが、その事前準備があまりに大変ではやる気が失せてクラス作るのが面倒になってしまいます。VBAクラスの作り方:独自Rangeっぽいものを作ってみたクラスの作成は、標準モジュールで作成していた時とは様相が違い戸惑う部分も多いと思います、それは、初めてVBAに取り組んだ時の戸惑いと同じかもしれません。最初はとにかく慣れることが一番です、細かい文法や機能は、少し慣れてから改めて学んでも遅くはありません。クラスを使って他ブックのイベントを補足するVBAでイベントを使う場合は、通常はイベントが発生するオブジェクト(ブックやシート等)のモジュールに記載します、つまり、各ブックの中にマクロを入れなければなりません。開いている全ブックまたは、他の特定のブックのイベントを処理するには、WithEventsキーワードを付けた変数宣言を使います、クラスを使って全ブックまたは他ブックのイベントを補足する方法につ...クラスとイベントとマルチプロセス並列処理エクセルVBAではマルチスレッドによる並列処理はサポートされていません、つまり通常は順序良く直列に処理していくしかありません。処理時間が多大にかかるような処理も現実には存在しているため、エクセルVBAで並列処理したいという要望も出てきます。オートフィルタを退避回復するVBAクラスシートにオートフィルタが適用されていて、かつ絞り込みされている場合は、VBAでは、何かと注意が必要になります。このような場合、オートフィルタを解除するか、フィルタ絞り込みをクリアして対応している事が多くなります。オートフィルタを解除したり、フィルタをクリアしてしまうと、それまでの絞り込み条件が消えてしまい、オートフィルタ退避回復クラスを複数シート対応させるVBAクラスシートにオートフィルタが適用されていて、かつ絞り込みされている場合は、VBAは何かと面倒になります。これはシートが一つしか扱えません。複数シートで使う場合は、シートごとにクラスのインスタンスを作成する必要があります。コレクション(Collection)の並べ替え(Sort)に対応するクラスオブジェクトを扱う事が多くなってくるとコレクション(Collectionオブジェクト)を使う機会も増えてくると思います。配列やディクショナリー(Dictionary)を使ったほうが良い場合も多くはありますが、単純にオブジェクトを保管し、順序通り(FIFO)に処理するだけなら、とても扱いやすい場合もあります。ステートメントこのサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。ステートメントこのサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。