ワクワクV010回目テーブル機能(2020-08-30)

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

わくわくV 10回目 2020/8/30(日) ある生徒さんが取り組んでいるノンプロアプリの要素技術である「テーブル機能」について調べます。このあたりはエクセルオブジェクトとその関連がわかってないととっつきにくいかもしれませんね。生徒さん同士の助け合いもあっていい感じです。 pic.twitter.com/fibN2DSb0o

2020-09-06 06:34:34
拡大
ほえほえ@スプシマン @hoehoe1234

シートからListObject(以下、テーブルということもあります)を取得するコードを他の生徒さんがつくってくれました。 pic.twitter.com/8q37KLbT4Q

2020-09-06 06:36:55
拡大
ほえほえ@スプシマン @hoehoe1234

生徒さん、いろいろ奮闘中です。最初はなかなかオブジェクトを調べていく感覚がわかりにくいですね。 pic.twitter.com/ttDw0m2V7X

2020-09-06 06:39:37
拡大
ほえほえ@スプシマン @hoehoe1234

アプリとしては分類欄以降を連結してまとめ欄に表示するのですがまずはテーブルとその周辺のオブジェクト、および、テーブールをVBAからどう使うのか?を調べる必要があります。 pic.twitter.com/LRn0sKMU2q

2020-09-06 06:41:04
拡大
ほえほえ@スプシマン @hoehoe1234

ノンプロアプリでは業務は本人がよく知っているので設計としては①システム概要図、②業務フロー、③機能一覧のうちの「②」が不要になるイメージですね。③はよくやりますがアプリの構成を決める「①」は重要です。作りそのものですからね。 pic.twitter.com/YRw3SQid1z

2020-09-06 06:43:31
拡大
ほえほえ@スプシマン @hoehoe1234

エクセルオブジェクトを説明する前にCollectionの説明が必要になります。エクセルオブジェクトのうち最後の「s」の付くオブジェクトはコレクションとしての機能を有しています。なのでまずはVBAのCollectionから調査していきます。 pic.twitter.com/MIns8oJHTe

2020-09-06 06:45:49
拡大
ほえほえ@スプシマン @hoehoe1234

図左がCollection、右が配列ですね。Collectionは配列の機能強化版のように見えますが一番の違いは参照型ということです(配列も実態は参照型ですが値として振る舞います)。インデックだけでなくキーも指定できることは重要です。

2020-09-06 06:47:41
ほえほえ@スプシマン @hoehoe1234

Worksheets(1)、Worksheets("Sheet1")はそれぞれインデックスとキーを指定しています。VBAのCollectionと同じですね。大容量性能、キーの使用と便利ですが組み込み関数と互換性がないため配列の代替えにはなりにくいところが残念ですね。

2020-09-06 06:49:52
ほえほえ@スプシマン @hoehoe1234

Workbooksあたりからエクセルオブジェクトの階層構造を説明しています。エクセルオブジェクトは複数のものをくくるのにこのコレクションを使用して(図左)、階層構造をなしているのでとても使いやすいですね。 pic.twitter.com/nJ0JQr6yWi

2020-09-06 06:51:28
拡大
ほえほえ@スプシマン @hoehoe1234

ListObjectが、エクセルオブジェクトの中でどのような位置づけにあるかの説明です。この階層構造と関連性がつかめればなにか掴んだような気になると思います。 pic.twitter.com/z8db0TN7SS

2020-09-06 06:53:38
拡大