社内SEの徒然なる日記

ExcelVBAのコーディング規約を作ってみた No.4 変数

■ 変数

さて、ExcelVBAのコーディング規約ですが、変数の規約を考えてみます。

■ 宣言

変数宣言における規約は、こうしました。

1.パブリック変数は使用しない。ただし、システム全体の制御で使用する場合は使用しても良い。
2.モジュール変数は原則として使用しない
3.ローカル変数はプロシージャの先頭に記述する


初心者がある程度慣れてくると、パブリック変数を使いたがりますが、パブリック変数を使用するとソースが追いにくいし、意図せぬ箇所で値が変更されて障害の原因になりかねないので禁止にしました。

ただし、システム全体制御。例えば、長い時間がかかる処理を中止する機能などを作る場合のみ使用化としました。

モジュールレベルの変数も禁止ですね。ただ、特定の機能に特化したモジュールの場合は使わないといけないこともあるので原則論にしました。想定しているのは、DBへのアクセスのようにモジュール全体で情報を保持するような場合です。

最後の変数宣言を先頭というのは、VBAでは先頭に纏めて書いた方が読みやすいと思ったからです。こんなイメージですね。
Public Sub test()	

Dim i As Integer 'カウンタ(ファイル)
Dim j As Integer 'カウンタ(データレコード)
Dim myRng As Range '罫線設定範囲


しかしこれは、先頭に記述させることで却ってソースが読みにくくなることがありそうです。考えものですが、VBAレベルで重厚長大な処理を作ることもないと思って採用しました。

■ 使用

今度は、実際に変数を使用する時の規約です。

1.変数の使い回しはしない
2.1の例外として、カウンタの場合は使い回しを許可する


時々、1つの変数を複数の用途に流用するソースを書く人がいますが、これはソースが追いにくいし、バグの原因になりそうなので禁止です。ただ、ループカウンタは使い回さないと、ループ処理の数だけカウンタ用の変数が必要になるので使い回しを可としました。

■ カウンタ

カウンタとして使用する変数については、専用の規約を考えることにしました。i、j、k ・・・と、アルファベットのiを始点とした小文字で宣言して、型はinteger か long の何れかを使用します。

    Dim i As Integer
Dim j As Long

For i = 0 To 10
For j = 0 To 12345678
・・・・・・
Next
Next


■ 後書き

次回は、変数の命名規約を考えてみます。

前回:ExcelVBAのコーディング規約を作ってみた No.3 規約作成
次回:ExcelVBAのコーディング規約を作ってみた No.5 変数の命名規約

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end --- スポンサードリンク

PageTop

コメント


管理者にだけ表示を許可する