パーフェクトエクセル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: