レンジの話し雑感3

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

ただ、レンジにはだまされましたね。ながい間(1年以上???)気が付きませんでした。FSOなんかはみればああ、こいうちゅうしょうかね。ってわかりますがレンジはわかりませんでした。これがレンジの正しい使いかをひつこく投稿している理由です。

2021-05-19 01:12:03
ほえほえ@スプシマン @hoehoe1234

1年以上つかってcells(i,j)とかrange("A1")ってだけやってたんだから情けない話です。探究心も研究心もチャレンジもしてなかったと反省しました。VBAを組むこと自体はさして問題ないので慢心ですね。エクセルオブジェクトをあまくみていました。

2021-05-19 01:14:16
ほえほえ@スプシマン @hoehoe1234

きっかけはTLでRnage(rng1, rng2)を見たときでしょうか?え!?え!?ってなってその後にunion、intersect、offset、resize,curretnreging、、、と見るに至って、なんかワイ、まったく勘違してる????って感覚に襲われました。実際にまちがってたんですけどね。

2021-05-19 01:15:54
ほえほえ@スプシマン @hoehoe1234

あとからよくよく読むとかいてあるんですが、こんなんわかりませんがなwwwでした。 pic.twitter.com/vlJRU7WRJa

2021-05-19 01:19:49
拡大
ほえほえ@スプシマン @hoehoe1234

よくよく読むとちゃんと???かいてあります。いろいろと。デフォルトプロパティがあるから便利だけどわかりにくくなってるんですよね。

2021-05-19 01:22:50
ほえほえ@スプシマン @hoehoe1234

ワイの提唱するレンジの区分と学び方。特に①の理解が大切。cells(i,j)はcells.item(i,j)のショートカットであり、cellsは引数を取らないプロパティであり、その概念をrows、colunsと一緒に、違いを覚えるのが得策。 pic.twitter.com/UwX7UHOxTi

2021-05-19 01:48:27
拡大
ほえほえ@スプシマン @hoehoe1234

正しい理解があれば rng.rows.columns.cells rnc.cells.cells.cells rng.rows.rows.cells が同じ範囲、同じ切り方であることがすぐにわかる。

2021-05-19 01:49:51
ほえほえ@スプシマン @hoehoe1234

for each e in rng.rows(1).cells であれば1行目をセルに切って個別にであるので for each e in rng.rows(1).colmuns と同じ結果個数が返ってくることが分かる。 すなわち、①~⑤は範囲という集合を演算して狙った範囲を取得するためにあるということが分かる。

2021-05-19 01:51:42
ほえほえ@スプシマン @hoehoe1234

このレンジの話は事あるごとにほえDX塾のワクワクVでもしてるんですけど、生徒のみなさんから「なんか使い方が分かりました!」とかで評判がよいです。レンジのエレガントな使い方は先に提示した表の関数を組み合わせて「狙った範囲」をつかって集合操作することなんです。

2021-05-19 01:55:02
ほえほえ@スプシマン @hoehoe1234

演習問題をやると実際に狙った範囲がうまくとれることが分かるとおもいます。表タイトル、列があるようなセル範囲でも rsn = intersect(cr, cr.offset(2)) とかで2行ずらした範囲を簡単に取得することができます。あとはこの範囲を for each e in rsn.rows とかで行単位にループすればいいんです。

2021-05-19 01:57:17
ほえほえ@スプシマン @hoehoe1234

これに表の⑤の特殊な範囲を組み合わせれば自由に範囲が設定できるようになります。結果、プログラムがわかりやすく、変更に強くなります。集合操作は変更にもっとも強いもののひとつですからね。 pic.twitter.com/hIgK12wOLG

2021-05-19 01:58:46
拡大