エクセルVBAクラス備忘録(クラスの統合(簡易なまとめ方・考え仮))

20240506エクセルVBAクラス備忘録(クラスの統合(簡易なまとめ方・考え仮))


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

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

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

 

<最近やっていること>
昔、作成した手続き型のVBAコードをクラスを意識して少しずつ直しています。(リファクタリング
それがある程度できたら、別の機能を新たに実装しようかと思っています。
その備忘録です。自分用なので読まなくてもいいです。日記です。汗


昨日、
【クラスのまとめ方は難しい(仮)】
として、備忘録を書きました。

そこには、ざっくり言うと「クラスのまとめ方」で、「機能をまとめるのはどうしよう・・・」という疑問を書きました。
(追記にも少し書いたが、まとめ方の方針をどうしようかと考えていた。)

 

結局、自分の過去の手続き型のコードのいろんな箇所で、機能面で、似たようなコード(しかし微妙に違うもの)が多い。
最終的に、キレイにすることは可能かもしれないが、作成中や改修中には難しいか・・・。

 

<簡易的なまとめ方>
「クラスをまとめて、メソッドで分ける。」

////////////////////////////////////////

〇クラスA
 ・メソッド1(手続き型のsabやfunctionを移植)
 ・メソッド2
 ・メソッド3

///////////////////////////////////////

これならメソッドごとに、引数の数や戻り値が違っても問題ない。
(前回の例と同様のまとめ方です。)

/////////////////////////////////

dim vクラスA as クラスA
set vクラスA = new クラスA
vクラスA.メソッド1 引数1、


set vクラスA = new クラスA
vクラスA.メソッド2 引数1、引数2、引数3

//////////////////////////////////////

みたいな感じ。

 

「簡易的」と書いたのは、このメソッド同士を見比べると、変数の宣言など重複しているものがあったりするからです。
それらは、「いずれ」はきれいにしたい。
(しかし、例えば、引数として用いる変数のスコープが異なったりする場合、変にまとめると、メイン文などに影響が出る。)


注:
オブジェクト指向、クラスとか、言いながら、ここで書いているのは、クラスでなくても、標準モジュールに書いた「functionをまとめる作業」とあまり変わらない。
(強いて言えば、エクセルVBAクラスは、メソッドがあるから、無理やりまとめやすいということかな・・・。)
↑これが正しい理解かは、分かりません。何となくやってたら感じたことです。汗。