トップページ > プログラム > 2015年12月22日 > 1IjfeHrT

書き込み順位&時間帯一覧

2 位/182 ID中時間01234567891011121314151617181920212223Total
書き込み数00000000000203101300000010



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
Excel VBA 質問スレ Part39 [転載禁止]©2ch.net
【PHP】下らねぇ質問はここに書き込みやがれ 3©2ch.net

書き込みレス一覧

Excel VBA 質問スレ Part39 [転載禁止]©2ch.net
121 :デフォルトの名無しさん[sage]:2015/12/22(火) 11:18:45.06 ID:1IjfeHrT
>>120
メイン関数が600行もあるので、内容は見る気まったくしない。

気づいた点:
・2行とか3行の連続した空行があるが、気持ち悪いのでやめて欲しい
・1個50行未満程度のFunction/Subに分けろ。そうすれば第三者も読む気になる

個人的な好み:
・変数宣言は必要になった場所で行え。そうすれば多少関数が長くなっても何十も変数宣言が続くことはなくなる
Excel VBA 質問スレ Part39 [転載禁止]©2ch.net
123 :デフォルトの名無しさん[sage]:2015/12/22(火) 11:37:34.62 ID:1IjfeHrT
画像貼付()で気づいた点(内容はほぼ見ていない)
・Tabキーでインデントしろ(普通は4つのスペースでインデントされる)
・不明な変数名(いきなりDnameって何?となって読む気かなりダウン)
 → コメントを入れるより、適切なネーミングで
・Dim CellWidth, CellHeight As Long
 CellWidthはLongにならない
・SheetをActivateする必要があるか?(RangeをSelectする必要があるか?)
・コメントされたコードは削除しろ
・「一旦画像をシートに貼り付け」とか書いてるが、なぜそうするのか意図不明

内容を全く知らないコードを読むのは、100行あたり10分から1時間程度かかる。
人に見てもらいたいなら、見てもらえるように努力しろ。
Excel VBA 質問スレ Part39 [転載禁止]©2ch.net
126 :デフォルトの名無しさん[sage]:2015/12/22(火) 13:06:10.62 ID:1IjfeHrT
>>124
Dnameは画像貼付()の第一引数。
引数名もひどいが、ローカル変数名もひどい。

> 一般論だがローカル変数名なんてどうでもよくない?
一般的にはどうだかわからないが、個人的にはどうでもよくない。
ネーミング超重要。
【PHP】下らねぇ質問はここに書き込みやがれ 3©2ch.net
205 :デフォルトの名無しさん[sage]:2015/12/22(火) 13:08:08.74 ID:1IjfeHrT
>>204
PHPExcel以外に選択肢があるなら、逆に聞きたい。
Excel VBA 質問スレ Part39 [転載禁止]©2ch.net
128 :デフォルトの名無しさん[sage]:2015/12/22(火) 13:47:37.98 ID:1IjfeHrT
>>127
一般論じゃないの?

それは一般的なのかみたいな不毛な議論したくないから曖昧な表現にしたが、
ローカル変数とはいえ、ネーミングに気を遣うのは良い習慣。
Excel VBA 質問スレ Part39 [転載禁止]©2ch.net
131 :デフォルトの名無しさん[sage]:2015/12/22(火) 14:56:45.78 ID:1IjfeHrT
>>130
ローカル変数のスコープとコードの読みやすさについては、「変数のスコープを小さくする」で
ググることをお勧めする。

ローカル変数宣言・定義を関数の先頭で行うのを強制される言語以外では、スコープを最小と
することが推奨される。
【PHP】下らねぇ質問はここに書き込みやがれ 3©2ch.net
207 :デフォルトの名無しさん[sage]:2015/12/22(火) 16:38:48.36 ID:1IjfeHrT
>>206
そういうことなら、
PHPExcel
 参考:
  PHPExcelの使い方・エクセル操作方法のまとめ
  http://mizyupon-rpg.com/posts/719.html

TCPDF (+FPDI)
 参考
  PHPでPDF帳票を出力する方法(TCPDF + FPDI)
  http://qiita.com/emegane/items/486975a79ebb267c2b8e

が良いと思う。
Excel VBA 質問スレ Part39 [転載禁止]©2ch.net
134 :デフォルトの名無しさん[sage]:2015/12/22(火) 17:24:02.60 ID:1IjfeHrT
>>133
VBAの「変数のスコープ」は、宣言・定義した位置から下だよ。
だから、関数の先頭じゃなくてもっと狭められる。
Excel VBA 質問スレ Part39 [転載禁止]©2ch.net
136 :デフォルトの名無しさん[sage]:2015/12/22(火) 17:50:28.23 ID:1IjfeHrT
>>135
> ブロックレベル、というのが通じてないのかな?
いや、通じてるよ。

だからといって
> 結局1関数内に複数の処理があって、2箇所以上で使う変数は関数の先頭で宣言してる
とするのではなくて、もっと変数のスコープを狭めた方が良いといってるんだけど。
Excel VBA 質問スレ Part39 [転載禁止]©2ch.net
137 :デフォルトの名無しさん[sage]:2015/12/22(火) 17:57:48.82 ID:1IjfeHrT
まとめると、

ローカル変数定義を関数の先頭で宣言する事を強制される言語(*1)は
しかたがないので変数の宣言は関数の先頭でするしかない。

*1) Ada由来言語とか。PL/SQLとか。

そうではない言語では、なるべく変数のスコープを狭めるのが良い。

・関数ブロック内のどこででも変数定義できるのなら、なるべく利用する直前で宣言する
・ブロックスコープが存在する言語では(C系とか)は、そのブロック内で宣言する

VBAはブロックスコープが存在しないが、関数ブロック内のどこででも変数定義できるので、
なるべく利用する直前で宣言するのが良い。

例外はJavascriptで、ホイスティングによりブロックスコープ内で宣言した変数のスコープは
関数スコープにまで拡大する。
それにより
・それでも利用する直前で宣言するよ派
・知らない人がいるかもしれないので、関数の先頭でまとめてするよ派
が存在する。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。