趣味はたぶん旅行です海外旅行やキャンプとITについて。2023VBAを使うようになってはや数年。当初は見よう見まねのプログラミングでしたが、段々慣れてくるにしたがってネーミングルール等のコーディングルールが決まってきました。いっても、私は一人プログラマーなのでマイルールです。これから始める方の参考のために、私のコーディングルールを書いてみます。Explicitを必ず宣言する変数宣言をしていない場合にエラーを出す機能です。これを宣言しておかないと、宣言し忘れて大きな問題を引き起こす可能性があります。TANAKA一回設定すれば自動で入力されるので必ず設定しましょう。Explicitって何?ByValは必ず指定するプロシージャーで何もつけずに引数を宣言すると、呼び出し元の引数(パラメーター)を呼ばれた側から変更可能な状態になってしまいます。uParameter1もBBBに書き換わってしまいます。Subこれはサブプロシージャーから値を返してもらうことができて、便利な面もあります。意図せずサブプロシージャーで親プロシージャーの変数を書き換えてしまう恐れもあり危険です。修飾子を付けた方が良いでしょう。uParameter2)詳しくは次のページに書かれています。Basic)なんで、デフォルトが参照渡し?と思うけれど、BASICだった頃からの名残なのでしょう。オブジェクトを渡すときにも指定しましょう。しないとサブを呼ぶ前はA1セルを参照していたのに、サブを呼んで戻ったらA3セルの参照になってましたとなりかねません。データ型宣言は必ず行うデータ型の宣言は必ず行います。それもできるだけ正確に行い、ObjectやVariantは極力避けます。(Variantでないと戻り値を受け取れない場合もあります)データ型を指定するメリットは次の通りです。インテリセンスが効くバグを未然に防げるかもしれない他の人がわかりやすい一番のメリットはインテリセンスが効くことです。打てば、次のようにインテリセンスが候補を示してくれます。スペース)そこから選べば素早く入力できますし、タイプミスをすることはないため作業効率が高いです。意図したプロパティ等が表示されない場合には何かがおかしいと気づくことができます。変数のデータ型が間違っているときや、編集中のプロシージャー名が重複している場合などです。誤ったデータ型の変数を代入しようとすると、エラーを出してくれるので、コーディング中に誤りに気付くことができます。型宣言していないと勝手に型が変換され、とりあえず動いているけれど、ある時動かなくなる、という事もあるでしょう。ついては、データ型が明確に書かれているので、後から見た人が容易にその変数が何なのかを理解できるという事です。書かれているだけだと、何なのこれ?ってところから始める必要があります。宣言しておいてくれれば一発なのに。そもそもの話ですが、データ型が指定できない、つまりわかっていないようだと、得体のしれない、たまたま動いているようなコードを書いてしまう恐れもあります。VBAは自動的な型変換(暗黙的なキャスト)が行われてしまうのでなおさらです。自分が何をしているのか明確に理解するためにもデータ型を指定した方が良いでしょう。Privateを指定するプロシージャーに何もつけないで定義すると、Publicとみなされます。これだと、他のモジュールから呼び出すことができてしまいます。いうプロシージャーを定義し、Module1のuMainから呼び出したとします。通常呼び出されるのはModule1のuSubです。uSubをuSubxに変えたとします。この状態でもuMainはModule2のuSubを呼び出して動作してしまいます。Module2のuSubがModule1と似たようなプロシージャーで、特定の条件の時だけ違う動作をするなら大問題が起こりかねません。当面は内容が同じだったとしても、あとからModule2のuSubを変更したとすると、それでも問題が起こります。明確にPrivateをつけておけば、他のモジュールからは呼び出しできないので、即エラーとなって気が付くことができます。ちなみに、Module2と3に同じ名前のプロシージャーを作って、Module1から呼び出すと「名前が適切ではありません」と言われてエラーになります。この場合もえっ!?となって調査に時間がかかります。初心者の場合は途方に暮れる可能性があります。objRowとかintCountとか型名をつけていました。データ型は宣言部分を見ればわかるので、いちいち書く意味がないのでは?と思いました。途中で変数のデータ型を変更した際に変数名を直し忘れると、後から変数名を信じてコードを書いてしまうためバグの元です。変数名の型名部分を直す際に余計な変数(別のプロシージャーの変数)まで間違って直してしまうとそれもまたバグの元です。上に書いたようにデータ型は必ず宣言した方が良いので、そうなると変数名に型名を付けるのは意味がなくバグの元になるだけです。変数名やプロシージャー名にuをつけるそこで試してみたのが変数名やプロシージャー名の頭にuを付けるというものです。