VBA 手間を惜しむな。何したか 画面に出そう。 [Excel VBA]
VBAプログラムを終了したら何か表示させよう
例えば、ファイルを出力するなら、どこのディレクトリに何のファイルを出力したか?
安心感が違います。
dim tmp as string
tmp = "ディレクトリ:(" & workPath & ")に ファイル:(" & fileName & ") を出力しました。"
MsgBox (tmp)
いったんtmpに入れているのは debug.print tmp をしたりデバック時に判るようにです。
何も表示せずに終了させるのですか?いつ終わったのだろうか?勘弁してください。
例えば、ファイルを出力するなら、どこのディレクトリに何のファイルを出力したか?
安心感が違います。
dim tmp as string
tmp = "ディレクトリ:(" & workPath & ")に ファイル:(" & fileName & ") を出力しました。"
MsgBox (tmp)
いったんtmpに入れているのは debug.print tmp をしたりデバック時に判るようにです。
何も表示せずに終了させるのですか?いつ終わったのだろうか?勘弁してください。
Excel VBA Cells の Colは数字はやめよう
Cells (3, 14) のカラムはどこだ?
Cells (3,"J" ) のほうが1目でわかるぞ
メンテも楽だし。。。。
本当はマジックナンバーを使いたくないが、、、
Cells (3,"J" ) のほうが1目でわかるぞ
メンテも楽だし。。。。
本当はマジックナンバーを使いたくないが、、、
VBA Sub Moduleは2画面程度に抑える [Excel VBA]
だらだらと3画面も続くようなプログラムはやめましょう。 ある程度の塊で意味を持たせて sub に納めます。 といいますか、いきなりコーディングせずに手順書を日本語!で書きます。 大まかな手順ごとに 面倒がらずにSub Module化します。 後から絶対見やすいです。 例えば TOPは以下のように sub main() dim r as long dim c as long … … Call A Call B Call C Call D end sub Call しかない場合が素敵です。 同じ処理をCopy Pasteして2回書いてもいけません。必ずSub Module化します。 たとえ数行でもです。 Bug修正時に絶対もう一方の修正を忘れます。 差分は 引数で分けます。
[VBA]インデントを深くしない技
if 文を重ねるとインデントが深くなってしまいます。3つ以上のインデントは避けるべきです。 そのための手法があります。ちょっと慣れが必要ですが。 sub aaa if a=1 then xxx xxx if b= 2 then yyyy yyyy end if end if end sub の場合は以下のように記述します。 sub aaa if a != 1 then exit sub ' 何もしない end if xxx xxx if b=2 then yyyy yyyy end if end sub aが1以外の場合何もしないので 条件を反転して 何もしなくて sub を抜けるようにします。 xxxが2行しかありませんが、体外20行ぐらいあったりします。 その場合20行先で、何もしないことが分かります。 ならば、最初にわかるようにすると親切です。