ワクワクV020回目オブジェクトとメモリモデル(2020-11-14)

2
ほえほえ@スプシマン @hoehoe1234

呼んでよいかと思います。 ・Item ・Count ・Remove ・Add これに加えて ・Itemにディスパッチするデフォルトプロパティを保有している ・for each構文で使用できること があるのではないかと思います。

2020-11-16 02:43:01
ほえほえ@スプシマン @hoehoe1234

ここの部分にかんしては私も曖昧なので「どのようなインタフェース、特性」をそなえていればそれは「コレクションと呼べるのか」についてご存知のかたがいらっしゃれば教えていただきたいです。厳密に区別する必要はないのかもしれませんが。でも少なくともfor each構文で使いたいですね。

2020-11-16 03:05:34
ほえほえ@スプシマン @hoehoe1234

後は、もしかしてItem関数でのアクセスは1始まりというのも条件に含まれるかもしれませんね。VBAのCollectionクラスのインタフェースを持つものを「コレクションとする」なら簡単なのですがそれでよいのでしょうか?わかりません。

2020-11-16 03:06:59
ほえほえ@スプシマン @hoehoe1234

静的型言語ではスーパクラス/サブクラスの代入可能性が決まっているのですが、VBAではいまいちわかりません。Collectionと宣言した変数にWorksheetsオブジェクトをバインドできません。継承を含めこのあたりは深堀りしても仕方ないのでバリアントとオブジェクト型にはどのようなオブジェクトも

2020-11-16 03:09:02
ほえほえ@スプシマン @hoehoe1234

バインドできる。程度の理解でよいかと思います。 変数はその種別によりローカル変数、静的変数、ヒープ上の変数と区別されるのですがそれぞれ生存期間が違います。それとは別にPrivateで代表される可視性(スコープ)もあります。この辺を混乱しないように注意したいところです。 pic.twitter.com/TIeeMAUT9w

2020-11-16 03:11:12
拡大
ほえほえ@スプシマン @hoehoe1234

Nothingはなにか?なのですが、Objeptr->0、Varptr->アドレスあり、typename->"Nothing"なのでどうも何もさしてない参照型変数ぽいですね。「それがなにか?」がわからないときはまずはTypename、そしてObjeptr、Varptr、Strptr等で調べます。それでもわからなければWinAPIをつかって変数の

2020-11-16 03:13:21
ほえほえ@スプシマン @hoehoe1234

値を直接見ます。オブジェクト型変数にset Nothngされることによりバインドされていたインスタンスへの参照がクリアされますね(これはレイメさん投稿のツイを参照してください)。ローカルの参照型変数の中をNothingオブジェクトの中の参照値(すなわちゼロ)にしているのですね。

2020-11-16 03:15:21
ほえほえ@スプシマン @hoehoe1234

これはSet構文を通じて参照型変数の内容がクリア(アンバインド)がされるのでランタイムは正しくインスタンスを開放できます(もうほかに参照がない場合)。無理やりオブジェクト型変数の値をゼロクリアしてもインスタンスは開放されなであろうと思います(ためしていませんが)。

2020-11-16 03:16:35
ほえほえ@スプシマン @hoehoe1234

エクセル関数を組み合わせるときには、もちろん最初は他の人のかいた組み合わせを解析するのですが、ある程度なれたら関数を違った観点で分けてみると自分なりの組み合わせを発見できるかもしれません。具体的には ①場所を返す関数 match、find ②参照を返す関数 indirect、参照式(相対、絶対、複合 pic.twitter.com/cREJeaNKOn

2020-11-16 03:19:11
拡大
ほえほえ@スプシマン @hoehoe1234

Transpose、indexなど ③参照に変換可能な文字列を返す関数 address、自分で生成した文字列など ④値を返す関数 sum, vlookupなど最終的な値を引っ張ってくる関数(引数に①~③を組み合わせる) といった役割に応じた分類・整理をするとよいかもしれません。

2020-11-16 03:21:19
ほえほえ@スプシマン @hoehoe1234

①~③の関数、生成した文字列を④の結果を持ってくる関数の引数としてうまく組み合わせて使うということですね。これに名前、テーブルの構造化参照、参照に変換可能な動的な文字列を組み合わせてほしい結果をうまく取得できる組み合わせを工夫していくようなイメージです。

2020-11-16 03:23:09
ほえほえ@スプシマン @hoehoe1234

これに対応するVBAの方はわかりやすいですね。Union、Intersect、Range、Resize、Offset、SpecailCels、CurrentRegion、UsedRange・・・といつものおなじみの関数があります。どうしてもエクセル関数の組み合わせはVBA関数の組み合わせより難しく感じますね。

2020-11-16 03:25:09
ほえほえ@スプシマン @hoehoe1234

ペンギンさんがご自分の業務改善ツールの「仕様書(フローチャート)」をもってきてくれました。初めて書いたそうですが素晴らしいチャレンジですね。今では業務フローを書くツールとして使われていますが処理がよくわからない場合はフローチャートでロジックを整理するのも良いかもしれません。 pic.twitter.com/UGlORv7RmA

2020-11-16 03:27:27
拡大
ほえほえ@スプシマン @hoehoe1234

ペンギンさんツールの「もじ列カッター」はVBSで実装されています。今回、ペンギンさんはそのロジックをフロチャートでもってきていただきましたので、他の生徒さんと一緒にフロチャートベースで仕様をレビューしてみました。提案を含めて10件の指摘が出てきました。 pic.twitter.com/EsoxpRCGSV

2020-11-16 03:29:22
拡大
ほえほえ@スプシマン @hoehoe1234

これらの指摘を反映して書き直したフローチャートです。レイメさん、ありがとうございました。ファイル名を変更(短くする)のですが、Move形式とするかコピー形式とするかはその用途から検討する必要があります。どの方式にしても必要な観点は失敗してもフィアルを失わないことです。 pic.twitter.com/e3gtUYoWy8

2020-11-16 03:33:04
拡大
ほえほえ@スプシマン @hoehoe1234

図右は今回のツールのフロチャートですが、左に「業務フロー」を書く場合のフロチャートのイメージを書いてみました。業務フローはより上位レベルでの処理のながれなのでフロチャートを使うのがよい場合もあります。正式な業務フロー手間がかかりますし、UML等ではツールがない/不慣れな場合も

2020-11-16 03:37:38
ほえほえ@スプシマン @hoehoe1234

あり、相当の精度とボリュームが要求されるのでなければフロチャートで業務フローを書き、左にデータレーン、システムレーン、説明欄を追加するような形で業務フローをシンプルに記述できるとおもいます。 pic.twitter.com/UeoLtGW2Xd

2020-11-16 03:39:11
拡大
ほえほえ@スプシマン @hoehoe1234

VBAではまともなデータ構造がない(よくわからない)のですが、他言語を参考にイテレータ、シーケンスス、コレクションを考えてみました。後になるほど高機能となります。データ操作をする場合はこのようなデータモデルを考えるとうまく設計できる場合があります。 pic.twitter.com/TuADgYhEMR

2020-11-16 03:40:32
拡大
ほえほえ@スプシマン @hoehoe1234

図中央下にあるようにコレクションには2つの方法すべての要素にアクセスできます。 ① for each e in コレクション ② for i = 1 to コレクション.Count です。位置が必要でなく、すべての要素にアクセスできればよいのであれば①形式を、そうでなければ②形式を使用すれば良いと思います。

2020-11-16 03:42:58
ほえほえ@スプシマン @hoehoe1234

コレクションの話はもじ列カッターツール内でコレクションを使用しているので説明しました。そしてこのFSOについてもツールで使用しているので講義として取り上げました。FSOは便利ですね。一度生成してしまえばパスとかを考えることなくオブジェクトの操作でファイルを操作できます。

2020-11-16 03:44:32
ほえほえ@スプシマン @hoehoe1234

ファイルを操作する上では、図右上にあるように絶対パスと相対パス、カレントディレクトリを理解する必要があります。絶対パスは最上位からの位置の指定、相対パスは今いるディレクトリ(カレントディレクトリ)からの位置の指定となります。エクセルの絶対参照、相対参照と同じイメージですね。 pic.twitter.com/Nuj0tIx78d

2020-11-16 03:45:56
拡大
ほえほえ@スプシマン @hoehoe1234

こんどは文字列カッターツールのソースコードをみてのレビューです。6点ほど指摘が出ました。次回のレビューで完成を目指します。今回のレビューはペンギンさんがフロチャートを持ってきていただいたのは特に良かったように思います。今後もフロチャートを書いて技法を習得していただければ。

2020-11-16 03:48:01
ほえほえ@スプシマン @hoehoe1234

Nothingの調査です。なにかわからない場合は、可能であればイミデトウインドウをつかっていろいろと調査していきます。 pic.twitter.com/T0KgHpMbz3

2020-11-16 03:49:02
拡大
ほえほえ@スプシマン @hoehoe1234

記念すべき第一回目のフロチャートです(一部のみ)。 pic.twitter.com/OBipROyH8Y

2020-11-16 03:49:55
拡大
ほえほえ@スプシマン @hoehoe1234

レイメさんが、ペンギンさんツールの仕様に従い、ツールをリファレンス実装してくれました。ありがとうございます。 pic.twitter.com/GzqgIh9WwI

2020-11-16 03:50:56
拡大