5倍速!メールマガジン
外部アカウントで登録
受講生の声
新着の講座投稿
新着の講座コメント
新着のノート投稿
投稿一覧へ新着のノートコメント
表示できる投稿はありません。
サイト運営者紹介
小川 慶一講師/教材/システム開発者紹介
この学習サイトの教材制作、サポート、システム開発をすべてやっています。
表示できる投稿はありません。
この学習サイトの教材制作、サポート、システム開発をすべてやっています。
田中 宏明さんの投稿
(投稿ID: 4470) 添付ファイルのダウンロード権限がありません
その後、別の解法を探し、ArrayListと呼ばれる配列(自作クラス)でうまく動作しました。ファイルも添付しますので、この感激を共有していただければ幸いです。
小川 慶一さんのコメント
(コメントID: 6162)
がんばっていますね。
mondai5_Col1と比較して、理解に必要な技術が増えてコードが増えて可読性が落ちたのは分かりました。
それで、その引き換えに得られたものは何でしょうか?
ぱっと見、クラスモジュールを持ち出したメリットが感じられません。
クラスモジュールのほうも、DoLoop内でインデントが崩れているところが何箇所かあるとか引数の型指定がないとかたとえば「ContainsU」てのは定義したけど使ってなさそうだけど?とか、気になることはいろいろあります。
これは、田中さんの自作なんでしょうか。
自作でないならば、そもそも New Collection で済ませれば簡単に済むところ、デメリットが増えるだけなのにもかかわらず別ライブラリを持ち出したこと自体ダメでしょう。「クラスモジュールの勉強のために」ということでしたら、スクラッチで書くべきです。
自作であるならば、クラスモジュール内のコードについてもご自身の責任において内容を検証し、コードをもっと洗練させるべきです。
参考用に、mondai5_Col2を作りました。
Collectionに数値ではなくセルへの参照を設定したサンプルです。
しつこく言いますけど、「クラスモジュール使ったほうが鮮やかに仕事が片付く」なんてこと、エクセルVBAではまずないですよ。
僕はdLibの開発以外で使ったことはありません。
> 小川慶一先生:
>
> その後、別の解法を探し、ArrayListと呼ばれる配列(自作クラス)でうまく動作しました。ファイルも添付しますので、この感激を共有していただければ幸いです。
田中 宏明さんのコメント
(コメントID: 6163)
確かに、あるデータ転記マクロを小川先生の“dLib for Excel VBA”に対応させた際、標準モジュールのコードが簡潔になり、可読性が良くなりましたので、ご指摘の内容を理解できました。
お忙しいところ、ありがとうございました。
小川 慶一さんのコメント
(コメントID: 6164)
まとめます。
[1]
代替の技術を導入するならば、それによるメリットを明らかにすべきです。
デメリットしかないならば、その代替技術を導入することはとりやめるのが正解です。
[2]
[1]のメリットは「自分の勉強になる」ということでもよいですが、その場合は、その代替技術の部分については、自分でコードを書くべきです。
であれば、よい学びになるかもしれません。
[3]
エクセルVBAでは、すでに定義済、インスタンス生成済のオブジェクト(クラス)が十分に用意されています。
その十分さは、それらの既存オブジェクトだけでほぼすべての処理を自動化できるレベルです。
[4]
[1],[3] より、クラスモジュールを導入するメリットはエクセルVBAではまずありません。
[*] さらに、以下は、補足です。
そもそも、クラスモジュールを定義することが有効なのは、同一の性質を持ちつつも別のふるまいをする、複数のインスタンスを生成することに意義がある場合です。
逆に言うと、独自に定義した複数のインスタンスを作るのでなければ、クラスモジュールを作る意味はありません。
dLibがクラスモジュールを使っているのは、表領域の再定義を表のインスタンスごとに行うためです。
田中 宏明さんのコメント
(コメントID: 7808)
今日、「同一の性質を持ちつつも別のふるまいをする、複数のインスタンス」の実例が
思い浮かびました。
1つの構造体を定義し、それを複数の一次元配列に入れて別のふるまいをさせ、複数
フォルダに点在する複数のExcelファイルの集計が鮮やかに片付くことを体験しました。
田中 宏明さんのコメント
(コメントID: 7809)
今回の事例では、Long型の二次元配列を一つ定義でことが足りますが、
可読性に優れ、後に設計しなおす場合の拡張が簡単です。
小川 慶一さんのコメント
(コメントID: 7874)
>思い浮かびました。
だいぶ時間が経ってしまいましたが、この断片だけでは訴求したいことが何なのか分かりませんでした。
複数の構造体を定義することをもってそう見ているように読めたのですが、提示いただいた例で良いのであれば、以下の [1] や [2] も「同一の性質を持ちつつも別のふるまいをする、複数のインスタンス」に相当するのではないかと。
田中 宏明さんのコメント
(コメントID: 7878)
目の前にある課題(Excelで完結する簡単な処理)を解決するために
データ構造(DPRのD)に着目して設計・コーディングができると、
メンテナンスや拡張が簡単になることを学んだのかなと思います。
小川 慶一さんのコメント
(コメントID: 7882)
Pytohnの学習が進むと、構造体やクラスへの見え方もまた変わってくるかと思います。
別言語での学びを経てからVBAを見直すと、それはそれでまた面白いですよ。