[過去ログ] VBAなんでも質問スレ Part2 [転載禁止]©2ch.net (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
34: 2015/07/06(月)13:55 ID:henE3y4I(1) AAS
向き不向きに関する思い込みだな
35
(1): 2015/07/06(月)17:53 ID:J6N5PkHq(1/3) AAS
>>32
数十行だろうと数万行だろうと
ひとつの変更で複数の変更箇所が出てくる構造自体のほうが問題だと思うよ

>そのコードを知らない他人から見れば、結局全部見ることになる

云々はベタに一個ずつ指定していても同じ確認コストを要するわけで
適切なコメントをつけとくなりなんなりで対応しないとしょうがないんじゃないの?

>>33
いや、だから

>レイアウト自体の変更ではなく、全体を一気に動かすなら

という前提条件をつけた上での話をしてるんだけど
36
(3): 2015/07/06(月)18:38 ID:fhp0P+BJ(2/3) AAS
>>35
> という前提条件をつけた上での話をしてるんだけど
そう言うケースがどれだけあるんだ?
って話でしょ
滅多にないケースに対応するために分かりにくい方法をとる必要はないよね
37
(3): 2015/07/06(月)21:37 ID:J6N5PkHq(2/3) AAS
>>36

表の頭にあとから表題を付け加えるとかで
全体を動かすケースってのはそれなりにあると思うよ、
仕様変更で項目順の変更とか途中に項目追加とかのほうが多いだろうけど。

それに、全体をずらすってのは>>29の発案であって俺が言い出した話じゃないんで
俺はあくまで他人から与えられた前提条件で考えただけの話
38
(1): 2015/07/06(月)22:43 ID:fhp0P+BJ(3/3) AAS
>>37
> 仕様変更で項目順の変更とか途中に項目追加とかのほうが多いだろうけど。
普通はそうでしょ?

> 俺はあくまで他人から与えられた前提条件で考えただけの話
あまりない条件だけ考えることになんか意味があるのか?
39
(1): 2015/07/06(月)23:03 ID:J6N5PkHq(3/3) AAS
>>38
そっちのが多いとは言ったが、全体を動かすのもそれなりにあるって言ってるじゃん
滅多にないとかありえないとかいうほどのレアケースではないよ
40
(1): 2015/07/06(月)23:42 ID:QbnSMTRw(1) AAS
>>39
> ありえないとかいう

誰もそんなことは言ってないだろ?
お前さんも認めてるように

> 仕様変更で項目順の変更とか途中に項目追加とかのほうが多い

なら、そっちの対応を優先して設計した方がいいんじゃね?

って話
41
(1): 2015/07/06(月)23:52 ID:UMBaWGrv(2/2) AAS
>>37
別にセルのアドレスを固定で持ってようが、一つのアドレスに対して
相対で持ってようがどっちでもいいだろ
ケースバイケースで使い分けようとは思わないのか?

俺が言ったのは数十個(行)程度の修正から避けるために
相対座標で組んだ方が良いと思っているならプログラム組むのは
向いてないってことだよ
だから、お前は長いソースを組むような仕事は向いてないよって言ったんだよ。
せいぜい短く済むようなのを探しとけw

分かりやすいソースのほうが、修正工程の見積もりだって立てやすい
お前のいう相対座標は、その一つの絶対座標に対して成り立っているんだから
見出しが追加されてずれる程度ならいいが、途中の箇所に複数追加変更されたら
むしろ修正面倒なんじゃね?
数万も入力させるセルがあるなんてシートの設計のがおかしいと思うが
数万のセルがあちらこちら変更になるのなら簡単で見やすい定義を切っている
ほうが引き継ぎもしやすいし、修正もしやすいってわからんのか?
42
(1): 2015/07/07(火)05:36 ID:PlDHyacp(1/8) AAS
>>40
ああ、ごめん
「ありえない」じゃなくて「あまりない」だったか
どっちにせよレアケースではないのでそこが重要とは思わんけど

>>41
おれも「ひとつの手」だといってますよね?
ということはそれが絶対ということではないですよ。

まぁ、全部直値で指定する場合の変更コストとOffsetで記述した場合の変更コストが
それほど変わるとも思えませんが。

>>29のっぽい例で言えば
工事_A = "AO1" → 工事_A = "AO2"
工事_B = "AP1" → 工事_B = "AP2"
工事_C = "AQ1" → 工事_C = "AQ2"
・・・

というのが

工事_A = "AO1" → 工事_A = "AO2"
工事_B = Range(工事_A).Offset(0,1) → 工事_B = Range(工事_A).Offset(1,1)
工事_C = Range(工事_A).Offset(0,2) → 工事_C = Range(工事_A).Offset(1,2)
・・・

になる程度の話でしょ?

んでもって、何もわからない誰かに保守を引き継ぐのであれば表のレイアウトについてはコメントに書いておくべき物じゃないですかね?

後任の人があらかじめ何の予備知識もないなら全部の要素を直接指定しているのかそうでないか自体、
少なくともコードを全部読まなきゃ判断できないわけで、それなら相対指定で書いてもおなじことです。
43: 2015/07/07(火)05:42 ID:PlDHyacp(2/8) AAS
やべ、工事_AだけRangeで指定してなかったし、全体をずらすだけなら
工事_B以降には変更ないわ

工事_A = Range("AO1") → 工事_A = Range("AO2")
工事_B = Range(工事_A).Offset(0,1) → 工事_B = Range(工事_A).Offset(0,1)
工事_C = Range(工事_A).Offset(0,2) → 工事_C = Range(工事_A).Offset(0,2)
・・・
44: 2015/07/07(火)05:48 ID:PlDHyacp(3/8) AAS
さらに間違ってた
工事_AがRange型ならそれ以降にRange(工事_A)なんて書く必要なかった

まぁ、何も知らずにコードを読んで表のレイアウトを理解できるかどうかとか
表の変更にかかるコストとかには大して影響ない話だけど
45
(1): 2015/07/07(火)07:47 ID:yxtOW/kO(1/4) AAS
>>42
> どっちにせよレアケースではない

いや、レアケースかどうかじゃなくて

> 仕様変更で項目順の変更とか途中に項目追加とか

と比較しての話なんだが...
ひょっとして論理的な思考ができない人なの?

> 少なくともコードを全部読まなきゃ判断できないわけで、それなら相対指定で書いてもおなじことです。

セルアドレスなら一目でどこを指してるのかわかるけど、Offset( ) だとちょっと面倒でしょ?
そもそも、自分で間違えてるようじゃ説得力 0 だしね w
46
(1): 2015/07/07(火)08:33 ID:PlDHyacp(4/8) AAS
>>45
とにかく、コストがさほど変わらん以上、そういうことは重要ではないよね、
って言ってるんだけどそれが論理的に理解できない人なの?

んで、Offsetで(R1C1形式で)書くのがいやなら
RangeでA1形式で書けばいいじゃん
そんなの瑣末なことでしょ

あと、間違えたのは夜中にトイレで起きたときに書き込んだからで
たぶんあのときだとどっちで書いても間違えてる
(普段からR1C1形式で書くのでどっちかってーと俺はA1形式のほうが間違える)
47: 2015/07/07(火)08:34 ID:xJTxnmtV(1) AAS
相対座標がどうたらというのは>>31が言い出したことにすぎないし、"AY0"とかいう文字列で指定すること自体がけしからんという意見。
48
(2): 2015/07/07(火)12:53 ID:yxtOW/kO(2/4) AAS
>>46
> とにかく、コストがさほど変わらん以上、そういうことは重要ではないよね

どう書いてもたいして変わらんから、ごちゃごちゃ言い出した >>29 とか >>31 がバカと言う主張なら納得

> RangeでA1形式で書けばいいじゃん

そう言う問題じゃない
Range("E3").Range("G4")
ってどこ?
ってすぐわからんでしょって話

まあ君にとってはどうでもいい話だったな w
49
(3): 2015/07/07(火)13:20 ID:PlDHyacp(5/8) AAS
>>48
全体を動かす際のコストは明らかに相対参照のほうが上で、
レイアウト変更ならどっちもどっち、って話だよ。

俺個人としては表の各要素の絶対座標よりも表のレイアウト内での相対位置のほうが
重要だと思うんで可読性は相対表記のほうが上だと思う。
もちろん、range("E3").Range("G4")とは書かないよ
だからこそのOffset表記なんであって
仮に書くなら
工事_A = Range("G4")
工事_B = 工事_A.Offset(0,1)
みたいに書けば表の中での位置関係が分りやすい(、と思うってだけなんだけどね)

んでさ、一々相手の人格攻撃するのは止さないか?

反論するのは難しくないけどめんどくさいし
貴方にとっても内容を論理的に言うこと以外に自説の説得力を増す手法なんてないよ
50
(1): 2015/07/07(火)16:17 ID:yxtOW/kO(3/4) AAS
>>49
> レイアウト変更ならどっちもどっち、って話だよ。

そんな思い込みを前提にされてもなぁ...

> 重要だと思うんで可読性は相対表記のほうが上だと思う。
> だからこそのOffset表記なんであって

応用力ないの?

> Range("E3").Range("G4")
> ってどこ?

って書いてあるんだから、レスする前に
Range("E3").Offset(3,6)

Range("K6")
のどっちが可読性が高いかとか考えないのか?

> めんどくさいし

君にはレスしないと言う自由があるよ
反論するのも苦労してるみたいだしね w
51
(1): 2015/07/07(火)16:28 ID:PlDHyacp(6/8) AAS
>>50
>どっちが可読性が高いかとか考えないのか?

うん、だからOffsetのほうが読みやすいよ

>レスしないという自由
は確かにあるし
君にも好き勝手な方言を垂れ流す手段(自由や権利ではない)はあるんだけど、
こうやってきちんと反論しといたほうが良さそうなんで仕方ないからそうしてる
52: 2015/07/07(火)16:29 ID:PlDHyacp(7/8) AAS
変換ミスしちゃった
×方言
○放言
53
(1): 2015/07/07(火)17:37 ID:yxtOW/kO(4/4) AAS
>>51
> うん、だからOffsetのほうが読みやすいよ

へー、そうなんだー、すごいねー(棒

基準の位置と Offset の値の二個読まないといけないだけでも直書きより不利なのに、読みやすいとか笑えるわ w

あと方言とか意味不明
もう少し自分の書き込み見直した方がいいんじゃね?
54
(3): 2015/07/07(火)18:35 ID:PlDHyacp(8/8) AAS
>>53

絶対アドレスが必要ならそうだけど
通常は表内部のレイアウトが問題なんだから
絶対アドレスは気にする必要ないよね?

それともいちいち「何々の項目はF5だ」とか気にして作業してるの?
俺は「表の1列目は@@@の項目で、2列目は***の項目だ」みたいな捉え方はするけど
絶対アドレスが必要になったことなんてないよ

変換ミスについてはまぁ申し訳ない、だけどそれは議論の結果には影響ないと思う。
55
(1): 2015/07/08(水)10:49 ID:U80w5CD7(1/4) AAS
>>54
> それともいちいち「何々の項目はF5だ」とか気にして作業してるの?

いちいちそんなことをしたくないから定数で定義してるんだよ
意識するのは定数を定義するコードを書く時だけ

> 絶対アドレスが必要になったことなんてないよ

Offset( ) で書くにしても、基準のセルは絶対アドレスで指定するだろ
56
(3): 2015/07/08(水)11:43 ID:KchLLrX8(1/7) AAS
>>55
まだやるんかw

いや、基準のセルは俺も絶対アドレスで指定してますよね。

それ以外の部分では表の中での位置関係(表の何行目であるとか何列目であるとか)
についての情報のみが必要であって
それは基準セル(通常は左上端)からの相対位置が分ればそれで事足りると言ってるのです。
むしろ個々の要素についてまで絶対位置指定などしても可読性が下がるだけです。

まぁ、これはあくまでも普段からR1C1形式を好んで使ってる人間(つまり俺)の意見です。

この判断の優劣・良否・正誤等々については個々人の好みも有るでしょうから
どちらの考え方が優れているとかそういう視点での議論には決着がつかないと思いますけどね。
57
(1): 2015/07/08(水)12:37 ID:U80w5CD7(2/4) AAS
>>56
> むしろ個々の要素についてまで絶対位置指定などしても可読性が下がるだけです。

根拠もなしに下がるとか言われてもなぁ
とりあえず、
個人の感想です
って書いといた方がいいんじゃないか w

Excel マスターでない一般人は

>> 基準の位置と Offset の値の二個読まないといけないだけでも直書きより不利なのに、読みやすいとか笑えるわ w

だろ

> どちらの考え方が優れているとかそういう視点での議論には決着がつかないと思いますけどね。

はい、ループいただきましたぁ w

>>48
> どう書いてもたいして変わらんから、ごちゃごちゃ言い出した >>29 とか >>31 がバカと言う主張なら納得
58: 2015/07/08(水)12:51 ID:5jcTfYer(1) AAS
ID導入されて、本当によかった
59
(3): 2015/07/08(水)13:02 ID:KchLLrX8(2/7) AAS
>>57
>個人の感想です
>って書いといた方がいいんじゃないか

書いてますよね?
R1C1を使い慣れてる人間の意見だって。

一般人の定義がわからないけど
俺は一般人こそ表の体裁(つまり相対位置による個々の要素の関連)には気を使うけれど
その座標なんてものには関心を持たないと思いますよ。
俺自身一般人のつもりですし。

表の修正があったときに「L列から4列ずらす」ってのと
「12列目から4列ずらす」ってののどっちが分かり易いかなんて
俺に言わせりゃ一目瞭然で後者なんですけど、
あなたの言う一般人は前者を選ぶってんでしょ?
それについての価値観云々を論じることに結論が出るのかって話です。

>どう書いても

云々についてはすでに論述済みですが
全体を動かす場合には
基準セル1ヶ所のみを絶対参照で指定するほうが明らかにすぐれていますし、
レイアウトの変更であっても
Range表記で基準位置からの相対指定を用いるというのは
あくまで表の体裁の中だけに問題を帰着できるという意味で
レイアウトを記述するための手法として間違ってないと思います。

ところで、なんだか無理筋で反論続けてるように見えるのですが大丈夫ですか?
一応、われわれの議論を第三者が読んでどう判断するか
冷静に考えたほうが良いと思いますよ。
60
(1): 2015/07/08(水)14:00 ID:U80w5CD7(3/4) AAS
>>59
> 書いてますよね?
> R1C1を使い慣れてる人間の意見だって。

皮肉も理解できないの?
そもそもそれはその上の

>> 根拠もなしに下がるとか言われてもなぁ

にかかってるんだけど、そこはスルーなのな w

> 表の修正があったときに「L列から4列ずらす」ってのと
> 「12列目から4列ずらす」ってののどっちが分かり易いかなんて

あのさあ、反論できずに悔しいのはわかるけど、「ずらす」なんて変更がどれだけあるんだ?
って話に戻すの?
普通は、>>13 の例だと 注文書番号 を少し左に寄せたいから AO1 から AN1 に移動させてくれって言われるんじゃね?
直書きならその部分のみを AO1 から AN1 に書き換えるだけ
で、君の方法だとどうなるわけ?
可読性がすごくいいんでしょ?
示してみてよ。

> ところで、なんだか無理筋で反論続けてるように見えるのですが大丈夫ですか?
> 一応、われわれの議論を第三者が読んでどう判断するか
> 冷静に考えたほうが良いと思いますよ。

鏡見た方がいいと思うよ w
61
(2): [60sage] 2015/07/08(水)15:15 ID:KchLLrX8(3/7) AAS
>>
62
(1): 2015/07/08(水)15:39 ID:KchLLrX8(4/7) AAS
>>60

>根拠
ですから、>>59とかそれ以前の>>49とか>>54とか>>56とかは
全部根拠について書いてるんですが。
意図的なスルーですか?

>普通は、>>13 の例だと 注文書番号 を少し左に寄せたいから AO1 から AN1 に移動させてくれって言われるんじゃね?
>直書きならその部分のみを AO1 から AN1 に書き換えるだけ
>で、君の方法だとどうなるわけ?

いや、オフセット一個増やすだけでしょ

ところで、注文書番号 のAOは一番右端の列っぽいのであえてそこを選んでるんですか?

たとえばB列の外注業者名がずれたら残り全部ずれると思うんですけど。
んでもってそういった場合(一番右端の要素以外の変更の場合)、
「どこどこに@@って項目を追加するから、表を**の項目から全部右にX個ずらして」
みたいな話になるんじゃないでしょうか。
どうみたってオフセットのほうが簡単じゃないですか。

>鏡見た方がいいと思うよ
もちろん、俺は第三者を意識して書いてるので問題ないです。
貴方もそれで良いならこれ以上とくに言うべき事も有りません。

なお>>61は打ち間違えて送信しちゃいました。
たびたびスマン
63
(1): 2015/07/08(水)19:21 ID:U80w5CD7(4/4) AAS
>>62
> ですから、>>59とかそれ以前の>>49とか>>54とか>>56とかは
> 全部根拠について書いてるんですが。

レス番で書かれてもわからないので、該当の箇所を引用してみて

> いや、オフセット一個増やすだけでしょ

で、それが本当に AN1 を指してるのかどうやって確認するの?
可読性がいいんだから一目でわかるんだよね?
早く示してみてよ。

> ところで、注文書番号 のAOは一番右端の列っぽいのであえてそこを選んでるんですか?

一番最初の項目を選んだだけですよ

> みたいな話になるんじゃないでしょうか。

またその話?

>>37
> 仕様変更で項目順の変更とか途中に項目追加とかのほうが多いだろうけど。

って書かれてますよ。

> 貴方もそれで良いならこれ以上とくに言うべき事も有りません。

人のことをとやかく言う前に...

> なお>>61は打ち間違えて送信しちゃいました。

落・ち・着・け・よ
1-
あと 939 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.013s