[ノンプロ研]VBA中級講座第3期第3回・クラス

『コミュニティ「ノンプログラマーのためのスキルアップ研究会」VBAコース第3期第3回のツイートまとめです。コンテンツは「クラス」です。 https://tonari-it.com/community-nonpro-semi/』 のような解説を書くと親切ですね。
1
alice @alice37308108

オブジェクト Excelではいろんなものがオブジェクトとして作られている(ブック、シート、セルなど) →クラスという仕組みから生成されているけどインスタンスって言わない →そもそもシートやセルと作るためのコードを書いていない →関与していない #ノンプロ研

2021-09-03 20:34:52
alice @alice37308108

クラス →クラスモジュールから生成したオブジェクトをインスタンスという #ノンプロ研

2021-09-03 20:34:52
根岸 @2a9SouLnhptnIqG

クラスにモジュールレベル変数を宣言すれば プロパティができる。 #ノンプロ研

2021-09-03 20:35:41
alice @alice37308108

クラスモジュールを使って生成したインスタンスはオブジェクトなのでWithステートメントで使用することができる #ノンプロ研

2021-09-03 20:38:05
FukuCyndi papa @FukucyndiP

インスタンスはオブジェクトです ブック、シート、セルもインスタンスです。 エクセルが予め準備してるモノなので毎回Newする必要がないのです #ノンプロ研 #エア中級VBA twitter.com/alice37308108/…

2021-09-03 20:38:15
alice @alice37308108

VBAにおいてオブジェクトとインスタンスって何が違うの? ・オブジェクト  →ブック、シート、セルなど ・インスタンス  →クラスモジュールから生成したオブジェクト #ノンプロ研

2021-09-03 20:34:51
kudou @kudou32323

Dim myPerson As Person Set myPerson = New Person →この時にクラスをもとにしてインスタンスを生成する #ノンプロ研

2021-09-03 20:39:38
alice @alice37308108

Property Getプロシージャを使うと何らかの処理を加えたうえでの結果を定義できる #ノンプロ研

2021-09-03 20:45:23
根岸 @2a9SouLnhptnIqG

クラスにプロパティを定義する ・パブリック変数 ・Propertyプロシージャ #ノンプロ研

2021-09-03 20:51:16
alice @alice37308108

同じ名前のProperty Let/Setプロシージャを作ることで、何らかの処理や制限を加えた結果を返すことができる #ノンプロ研

2021-09-03 20:59:54
FukuCyndi papa @FukucyndiP

前回の講座と同じ内容ですねー 違いはオブジェクト 前回は  すでにあるオブジェクト”Sheet” を使った 今回は  カスタムに定義するオブジェクト(インスタンス)を使った #ノンプロ研 #エア中級VBA twitter.com/alice37308108/…

2021-09-03 21:05:51
くのへ@くのへ塾やってます @MasazaneKunohe

#ノンプロ研 「New」はインスタンスを生成 非常によく理解した!

2021-09-03 21:07:33
根岸 @2a9SouLnhptnIqG

クラスにメソッドを追加する方法 ・Subプロシージャ ・Functionプロシージャ #ノンプロ研

2021-09-03 21:08:46
alice @alice37308108

クラスモジュール、コードがどんどん長くなってわけわからん(というか読む気もしない💦)と思っていたけど、何でここはプライベート変数なんだろう?とか何でProperty Let/Setプロシージャを使うんだろう?とかがちょっとわかってくると、少しずつモヤモヤが取れていくのが楽しい #ノンプロ研

2021-09-03 21:12:26
FukuCyndi papa @FukucyndiP

クラスモジュールのコードにブレイクポイント入れて、実行してみる。 ブレイクポイントで止まった時にローカルを見ると "Me" の下にメンバーの状況が表示されます つまり、"Me" は標準モジュールで新しく定義したインスタンスを表します。 ん?ナニ言ってるかわからない? #ノンプロ研 #エア中級

2021-09-03 21:12:49
alice @alice37308108

戻り値がほしいときはFunctionプロシージャを使おう #ノンプロ研

2021-09-03 21:13:22
FukuCyndi papa @FukucyndiP

作ったクラスから新しいオブジェクトをNewして、 (定義した)オブジェクト. と、ドットを入れた瞬間、クラスモジュールに作ったメンバーがインテリセンスでずらりと並ぶ カスタムメンバーを搭載したオブジェクトが出来たと実感する瞬間ですね (*゚∀゚)ムッハー #ノンプロ研 #エア中級VBA

2021-09-03 21:18:33
くのへ@くのへ塾やってます @MasazaneKunohe

#ノンプロ研 コンストラクタ:インスタンスが生成されたときに実行されるもの デストラクタ:インスタンスが破棄されたときに実行されるもの なんだこれw

2021-09-03 21:22:02
kudou @kudou32323

コンストラクタ →インスタンスが生成されたタイミングで実行されるメソッド デストラクタ →インスタンスが破棄されたタイミングで実行されるメソッド #ノンプロ研

2021-09-03 21:22:25
alice @alice37308108

コンストラクタ →インスタンスが生成されるときに実行されるメソッド →クラスをNewしたときに実行されるメソッド デストラクタ →インスタンスが破棄されるときに実行されるメソッド #ノンプロ研

2021-09-03 21:24:23
FukuCyndi papa @FukucyndiP

でもPrivate 定義したメンバーはインテリセンスに表示されまてん。 モジュールレベルのスコープで定義されたメンバーだから( ゚ー゚)ウ ( 。_。)ン #ノンプロ研 #エア中級VBA twitter.com/fukucyndip/sta…

2021-09-03 21:26:26
根岸 @2a9SouLnhptnIqG

クラスで使用できるイベント Initialize: インスタンスが生成されたとき Terminate: インスタンスへの参照がすべて失われたとき Initializeは引数が渡せないので注意。 (引数を渡したい場合はSubプロシージャで作成する) #ノンプロ研

2021-09-03 21:32:08
くのへ@くのへ塾やってます @MasazaneKunohe

#ノンプロ研 なるほど!イベントマクロ使うのね!! コンストラクタに該当するのがClass_Initialize デストラクタに該当するのがClass_Terminate ビビッときた!!

2021-09-03 21:32:32
FukuCyndi papa @FukucyndiP

コンストラクタに引数渡しt...... いえ。欲しがりません-ω-) #ノンプロ研 #エア中級VBA twitter.com/alice37308108/…

2021-09-03 21:32:39
alice @alice37308108

クラスモジュールにあるイベントプロシージャ コンストラクタ →Initialize →インスタンスが生成されたとき デストラクタ →Terminate →インスタンスへの参照がすべて失われたとき →インスタンスが破棄されたとき(プロシージャが終了するとき) #ノンプロ研

2021-09-03 21:34:26
alice @alice37308108

無理やりにでもクラスを作ろう! #ノンプロ研

2021-09-03 21:47:56