最終更新日:2020-01-06VBAクラス入門:クラスモジュールの使い方を解説VBAの学習を続けていくと、いずれ必ずクラスとかオブジェクト指向といった言葉に出くわします。VBAクラスについて、基礎から実践応用まで解説していきます。ジュール」については、存在は知っていても使う機会が無かったかもしれません。クラスは、このクラスモジュールを使って作ります。作ったクラスがオブジェクトになります。VBAを理解する上で、クラスの理解やオブジェクト指向の理解は必ず役に立つはずです。クラス入門目次VBAクラス入門:クラスとは?オブジェクト指向とは?VBAを覚えて、いろいろ作りながらネットで調べたりしていると、クラスとかオブジェクト指向といった言葉に出くわします。VBEの「挿入」の一番下にある「クラスモジュール」は気になっていたかもしれません。このクラスモジュールを使ってクラスを作ります。クラスを使った全ブック(他ブック)のイベント補足VBAでイベントを使う場合は、通常はイベントが発生するオブジェクト(ブックやシート等)のモジュールに記載します、つまり、各ブックの中にマクロを入れなければなりません。開いている全ブックまたは、他の特定のブックのイベントを処理するには、WithEventsキーワードを付けた変数宣言を使います、クラスを使って全ブックまたは他ブックのイベントを補足する方法につ...VBAクラスの作り方:列名の入力支援と列移動対応クラスを使う良さとして、入力支援が使えてコーディングが楽になるという利点があります、列番号をクラスに持てば、列名が候補表示されて非常に便利です。これを実装するには、かなりの手間がかかります。クラス作成に手間をかけて、その後を楽にするということになります。VBAクラスの作り方:列名のプロパティを自動作成するクラスに列名のプロパティを作成することで、入力支援が使えてコーディングが楽になりますが、列数が多くなればVBAの記述量が増え、コーディングが大変になります。入力支援が使えるのは良いが、その事前準備があまりに大変ではやる気が失せてクラス作るのが面倒になってしまいます。VBAクラスの作り方:独自Rangeっぽいものを作ってみたクラスの作成は、標準モジュールで作成していた時とは様相が違い戸惑う部分も多いと思います、それは、初めてVBAに取り組んだ時の戸惑いと同じかもしれません。最初はとにかく慣れることが一番です、細かい文法や機能は、少し慣れてから改めて学んでも遅くはありません。クラスを使って他ブックのイベントを補足するVBAでイベントを使う場合は、通常はイベントが発生するオブジェクト(ブックやシート等)のモジュールに記載します、つまり、各ブックの中にマクロを入れなければなりません。開いている全ブックまたは、他の特定のブックのイベントを処理するには、WithEventsキーワードを付けた変数宣言を使います、クラスを使って全ブックまたは他ブックのイベントを補足する方法につ...クラスとイベントとマルチプロセス並列処理エクセルVBAではマルチスレッドによる並列処理はサポートされていません、つまり通常は順序良く直列に処理していくしかありません。処理時間が多大にかかるような処理も現実には存在しているため、エクセルVBAで並列処理したいという要望も出てきます。クラスとCallByNameとポリモーフィズム(多態性)VBAの使い方が進んでいくとクラスを使うようになっていきます。クラスを使うようになるとオブジェクト指向という言葉に出会い、オブジェクト指向を学んでいくとポリモーフィズム(多態性)という言葉に出会います。オブジェクト指向における多態性の説明としては、メソッドの呼び出し時に、メソッドが属するオブジェクト(クラス)の種類によって呼び出し先の実装コードが選択され、オートフィルタを退避回復するVBAクラスシートにオートフィルタが適用されていて、かつ絞り込みされている場合は、VBAでは、何かと注意が必要になります。このような場合、オートフィルタを解除するか、フィルタ絞り込みをクリアして対応している事が多くなります。オートフィルタを解除したり、フィルタをクリアしてしまうと、それまでの絞り込み条件が消えてしまい、オートフィルタ退避回復クラスを複数シート対応させるVBAクラスシートにオートフィルタが適用されていて、かつ絞り込みされている場合は、VBAは何かと面倒になります。これはシートが一つしか扱えません。複数シートで使う場合は、シートごとにクラスのインスタンスを作成する必要があります。コレクション(Collection)の並べ替え(Sort)に対応するクラスオブジェクトを扱う事が多くなってくるとコレクション(Collectionオブジェクト)を使う機会も増えてくると思います。配列やディクショナリー(Dictionary)を使ったほうが良い場合も多くはありますが、単純にオブジェクトを保管し、順序通り(FIFO)に処理するだけなら、とても扱いやすい場合もあります。VBAクラスのAttributeについて(既定メンバーとFor...Each)VBAクラスをエクスポートすると各種のAttributeが設定されているのが確認できます。それぞれのAttributeの意味と、さらに追加で指定できるAttributeについて説明します。Attributeの変更はVBA標準でサポートされておらず、その使用については慎重であるべきですが、どのようなものがあるかを知るのは、VBAクラスを使ったイベント作成(Event,RaiseEvent,WithEvents)VBAクラスを使う事で、ユーザー定義イベントを作成したり、動的にイベントを割り当てる事が出来ます。ユーザー独自のイベントを作成したり、フォームに動的に追加したコントロールにイベントを設定することができます。EventステートメントとRaiseEventステートメントを使う事で、ユーザー定義イベントつまりユーザー独自のイベントを作成できます。コントロールの動的作成|ユーザーフォーム入門ユーザーフォームは、事前に画面デザインを考えて、それにそって部品コントロールを配置するものです。ユーザーの操作に応じて、動的に部品コントロールを変更したい場合があります。このような場合の対処方法としては、大きく以下の2通りの方法があります。イベントプロシージャーの共通化|ユーザーフォーム入門ユーザーフォームに部品コントロールを配置していくとき、同種のコントロールを繰り返し何個も配置することは良くあります。コピペしながらようやく配置し終わったと思ったら、今度はVBAで同じイベントプロシージャーを何個も作成しなければならなくなります。SQL入門:DB接続部分をクラスで作成しています社会的にパソコンで扱うデータ量は近年急激に増えています。これに呼応してエクセルも2003までは65536行まででしたが、2007から飛躍的に増えて1048576行となっています。エクセルで100万行扱えるといっても、データ量としては列数もありますので、実際には100万行はおろか数十万行でもエクセルが重くなって扱いづらくなってしまいます。Next)|VBA入門7.マクロって何?VBAって何?|VBA入門8.セルに文字を入れるとは(Range,Value)|VBA入門9.空白セルを正しく判定する方法(IsEmpty,IsError,HasFormula)|VBA技術解説10.ひらがな⇔カタカナの変換|エクセル基本操作ホームマクロVBAVBAクラス入門:クラスモジュールの使い方を解説このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。GASスプレッドシート入門スプレッドシート応用GAS入門GAS応用ホームマクロVBAVBAクラス入門:クラスモジュールの使い方を解説このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。