VBAの変数を全て拾い出す

VBA(ExcelやWordのマクロ)のコードを書いていて長くなると変数の入力間違いなどに気付きにくくなります。
この場合、コードの先頭に「Option Explicit」と書きます。こうすると変数の綴りが違うとエラーが発生してすぐに気付きます。
そのためには全ての変数について「Dim」を使って明示的に宣言する必要があります。
変数を拾いだすのは結構、面倒です。

そこでJavaScriptを使って変数を全て拾い出す方法を考えました。

VBAでは変数に使える文字は、半角英数字、アンダースコアの他、全角のひらがな、カタカナ、漢字が使えます。
漢字は、シフトJISだけ想定すればいいので「一-龠」で拾えます。
先頭は数字とアンダースコアは使えません。
変数には何かを代入する場面があるはずなので「文字列 =」という部分を拾い出します。
拾い出した文字列の重複を削除し、タブと「Dim 」を付けて返します。

配列変数はあらかじめ宣言しないと、そもそも使えないので無視します。
ダブルクォートに挟まれた部分、シングルクォート以降は無視します。 (さらに…)

VBAで複数の変数を宣言するときの注意

VBAで変数を宣言するときは「Dim」を使います。
複数の変数を宣言する場合の注意についてコメントをいただきましたので紹介します。

Sub test()
    Dim a, b As Long
    a = "Hello"
    b = "Hello"
End Sub

変数aとbの型を長整数型に宣言しているつもりです。
この場合、「Hello」という文字列を代入すると「型が一致しません」というエラーがでますが、上の例では変数bに代入する段階でエラーになります。変数aはスルーされます。
つまり「Dim a, b As Long」だと「Dim a As Variant, b As Long」と同じ意味になります。
意図通り、両方の変数を長整数型にするためには「Dim a As Long, b As Long」とする必要があります。

Sub test()
    Dim a As Long, b As Long
    a = "Hello"
    b = "Hello"
End Sub

タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報