エクセルVBAクラス備忘録(変数(配列))スコープ(クラス・function仕様)

20240504エクセルVBAクラス備忘録(変数(配列))スコープ(クラス・function仕様)


<前書き>
エクセルVBAオブジェクト指向、初心者です。
VBA自体は、以前から使用していました。
オブジェクト指向というものがあることは、知っていましたが、ネットなどを見てもよく分からず、挫折した過去あり。
<以上前書き>

(素人なので間違っているかもしれません。汗。)

 

今回は、コードは書いていません。
ここ最近、クラス、オブジェクト指向をやってきて、思ったこととしたことの?備忘録(未確認・未確定メモ)です。
(素人なので間違っているかも。汗)


●標準モジュールで、宣言したpublic変数
例えば、ユーザーフォームでも使えるが、そのユーザーフォームで、クラスを生成し、そのクラス内で、当該public変数は使える。
(メソッドとして、クラス内にfunction関数を置き、そこで当該変数(配列など)を作ることは可能)・・・まあ、当たり前か。
しかし、そのクラス内で作った内容は、ユーザーフォームに戻った時、「そのままでは」、入っていない。・・・クラス内に封じ込め???
で、function関数なら、ユーザーフォームに変数(戻り値)を返せるので、返すと使える。・・・public変数なのになんか不思議。

 

●ユーザーフォームで、宣言したdim変数
上記同様で、ユーザーフォームで、クラスを生成し、そのクラス内で、当該dim変数は使える。
(メソッドとして、クラス内にfunction関数を置き、そこで当該変数(配列など)を作ることは可能)・・・まあ、当たり前か。
しかし、そのクラス内で作った内容は、ユーザーフォームに戻った時、「そのままでは」、入っていない。・・・クラス内に封じ込め???
で、function関数なら、ユーザーフォームに変数(戻り値)を返せるので、返すと使える。・・・ユーザーフォームで、作ったdim変数なのになんか不思議。


プロパティ(ゲッター)で出すのと同じ感じか・・・。
そんな仕様なのかな。

 

その他(感謝)
VBAのプロジェクトエクスプローラーで、ユーザーフォームのコードを開くとき、当該ユーザーフォームを指定して「シフト+エンター」で、
(オブジェクト表示でなく、)いきなりコードを開ける。(便利)
youtube「ひとりごとワンダーランド」様のユーザーフォーム上のテキストの動的配置の動画に紹介してありました。