#author("2016-08-06T12:33:02+09:00","default:Miyashita","Miyashita") #author("2016-09-10T19:42:17+09:00","default:Miyashita","Miyashita") *基本方針 VBA [#z3d8c070] Excelでの作業効率化・VBAの可読性向上・誤りを防止するためのメモ. VBAのコーディングは好みが分かれるため,他人が参考にするものでもないかも. こちらも [[基本方針 fortran>http://hydrocoast.jp/index.php?fortran/%E5%8F%AF%E8%AA%AD%E6%80%A7%E5%90%91%E4%B8%8A%E3%83%BB%E8%AA%A4%E3%82%8A%E9%98%B2%E6%AD%A2%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E5%9F%BA%E6%9C%AC%E6%96%B9%E9%87%9D%28fortran%E7%89%88%29]] こちらも [[基本方針 Fortran>http://hydrocoast.jp/index.php?fortran/%E5%8F%AF%E8%AA%AD%E6%80%A7%E5%90%91%E4%B8%8A%E3%83%BB%E8%AA%A4%E3%82%8A%E9%98%B2%E6%AD%A2%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E5%9F%BA%E6%9C%AC%E6%96%B9%E9%87%9D%28fortran%E7%89%88%29]] ***Option Explicitを使用する [#q76e30fd] -fortranのimplicit noneと同様にスペルミスを防ぐ.型を明示したほうが整理しやすい.宣言しない場合はVariant型になるというのもスマートな感じがしないし,メモリの無駄遣いだと思われる. -Fortranのimplicit noneと同様にスペルミスを防ぐ.型を明示したほうが整理しやすい.宣言しない場合はVariant型になるというのもスマートな感じがしないし,メモリの無駄遣いだと思われる. -ただし,VBAでがっつり解析を行うという人は滅多にいない(と思う)ので,短いSubでは必要ないのかもしれない. ***変数名をわかりやすく,1文字にしない [#f56e2aef] -1文字はループで使うi,j,kくらい. -大文字小文字の区別をうまく利用する.単語区切りで頭文字を大文字にするとか,特定の型だけ大文字で始まる,とか.コミュニティ内でルールを統一させる. -他人が見ても,自分が久しぶりにいじることになっても,何のことかわかるようなネーミングを心掛ける. ***VBAを実行するファイルと,I/Oファイルを同一にしない [#ke8d80fb] -処理実行をするファイルは,データ元のExcelファイル(ブック)と別にする. -コードを書いて制御する.xlsmファイル(マクロ有効ブック)からデータが格納されているファイルを開き,さらに別のoutput用ファイルを開いて出力,という構成が基本. -他の言語だと当たり前のように思えるが,なぜかExcelになるとその考えに至らない人もいる. ***グラフ描画は雛形を作成しておく [#l676abeb] -Excelで最初から思い通りのグラフが描けることはまずない. -軸のフォントや線の太さ,マーカーのサイズなどの体裁を一通り整えたグラフを,ダミーデータを使用して事前に(手動で)作成しておく.その後,VBAのコードでコピーして参照範囲を変更して描く,という手順がVBAでは最も楽で効率的. -似たような形式のデータでグラフを大量生産する場合にも大きさが統一されるし,雛形グラフのコピーのため,体裁を整えるコードの行を最小限に抑えられる. -コードでグラフを作成して体裁を整えようとなると相当手間がかかる.MATLAB慣れしているとなかなかこの思考から抜け出せなかった.