パーフェクトエクセルVBAを読んで。
新たな発見
パーフェクトエクセルVBAを読みました。とても有益な本です。VBAは7年ほど触っているのですが、知らないことがたくさんです。
新たに知ったことをまとめます。
1 Variantは他の言語にはない。
2 ネーミングの名前
・キャメル記法 (例) userName
・パスカル記法 (例) EndOfMonth
・アッパースネーク記法 (例)TAX_RATE
3 Staticで変数宣言すると、プロシージャ終了後も値を保存する。
4 変数の破棄
長期的に値を保存する方法は、Sheet上に記述。標準モジュールの変数保持は、完全に信頼しない。
クラスモジュールの変数破棄は、インスタンスが破棄されるまで。
フォームモジュールの場合は、フォームが閉じられるまで。
5 変数の代入は、「Let」が省略されいる。
(例)Dim num as long
Let num = 10
6 オブジェクトの代入は、すでにあるオブジェクトのメモリを参照している。
7 Set 変数 = Nothingは、破棄ではない。
Nothingはオブジェクトへの参照がなされていない状態。
破棄は、オブジェクト自体がメモリから解放されること。
8 列挙型は、定数のグループに名前を付けたもの。
9 配列のデータ型は統一。
10 IF文は、Elseも1行で書ける。
(例)If 変数 =1 Then msg = ”1桁です” Else msg ”2桁です”
11 Select Caseステートメントでlikeが使える。
(例)
Select case True
Case Text like ”*Hoge”
End Select
12 異常値の検出 → Debug.Assert
13 On Error GoTo 0 → エラー処理無効化
14 Sub → 戻り値なし Function → 戻り値あり
15 強制値渡し
Call myfun*1
*1:x