dポイントプレゼントキャンペーン実施中!

いつもお世話になっております。

現在VBAを勉強中の初心者です。

変数や定数名について質問させていただきます。

自分でコードを作成した場合、変数名や定数名について、『何にしようか?』と結構な時間迷ってしまします。
決められたルールの中であれば、自由に命名して良いのでしょうが、参考書等を見ると同じような役割の変数・定数には似通った名前がつけられているように見受けられます(まあ当然かもしれませんが・・・)
私も今後の事を考えて、規則?に沿った名称を使って行きたいと考えています。

何か参考となるサイトなどはありますでしょうか?

どうぞよろしくお願いいたします。

A 回答 (3件)

こんにちは。



>自分でコードを作成した場合、変数名や定数名について、『何にしようか?』と結構な時間迷ってしまします。

基本は、「単語で構成された、誰でも分かるような名前をつける」ということですが、VBAでも、まず、いくつか決まったものがありますから、それは、そのまま使えばよいと思います。

カウンター変数は、i,j,k ;一次的に保管する場合は、buf やtmp など、#1の方の引用先で十分だとは思いますが、旧VBで使われていたハンガリアン記法(intFl等)は、現在の.Netではマイクロソフトでは使わないようにと言われています。(理由は後で書きます)

Excel等で使われる省略形:
Office では、windows -> wn, workbook ->wb, worksheet -> sht ;ws, word -> wd, object- >obj などが使われています。これらは、小文字で使われることが多いです。

これらを称して、「コーディング規則」と言っていますが、プロ用の規則では、なるべく英語表記にするとか、決まったもの以外は、省略形は不可だといいます。しかし、アマチュアの中では、そこまでは気にすることはありません。例えば、ローマ字のzaikoではなく、inventory や stockとは言いますが、英語の得意な方に限ります。ただ、Hanniとか書くには、ちょっと格好が悪いです。

ある一定以上のレベルの人は、同じような変数や書き方になることが多いです。また、書き方も似ていますので、すぐにコードが理解できます。得てして、一定の規則に則った書き方が出来ない人で、実力ある人は見たことがありません。変数の名前付けだけでも、ある程度の実力は分かると言っても過言ではありません。

Microsoft で、VB.Netの規則ですが、このようなものがあります。
http://msdn.microsoft.com/ja-jp/library/aa291593 …
http://msdn.microsoft.com/ja-jp/library/h63fsef3

あまり良くない例:
http://home.att.ne.jp/zeta/gen/excel/c04p15.htm 
この著者は、プログラマーとして有名な方で、業界では重鎮なのですが、この規則は古いし、プリフィックスは参考にすべきではありません。また、サフィックス記号-$などは、原則としては使ってはいけません。これら古い書き方は、VBAの将来性をにらむと、それが大きな混乱の元になるからです。

●VB6以前の命名法を使っていた方への補足(ここは非常に参考になります。)
http://dobon.net/vb/dotnet/beginner/namingrules. …

ただ、VB系の場合は、プログラミング規則は、会社独自で作ることが多いので、完全にこれだけというものはありません。

これ以外にも、
・コーディングスタイルに気をつける
  大事なことは、読みやすさ(可読性)。
  修正しやすいように、修正したら、それが分かるように心がける。私の場合は、改編した場所には、日付を入れます。

・大文字小文字を使い分ける
  Pascal(パスカル)形式(プロシージャ名)
  各単語の頭文字を大文字で記述します。
  基本的には単語の接続には"-"や"_"は使いません。
 例えば、"indxBackColor"や"winMsg"みたいな感じです。

Camel(キャメル)形式(変数)
 前述のPascal形式に似ているのですが、最初の単語の最初の文字は小文字にします。
こっちも基本的には単語の接続には"-"や"_"は使いません。(←私自身、痛い失敗したことがあります。)
"indxBackColor"や"winMsg" とか書いた時に、indexbackcolor と書いたら、大文字・小文字の変化をしませんから、indxBackColorと書き間違えたことがすぐに分かります。

全部大文字(定数)
定数を表す時は大体、全部大文字にします。(例外は、プレフィックスのg--グローバルの意味などをつける時は、それを小文字にします。)
ただ、全部大文字なので、単語をつなぐときは、例えば、"BACK_COLOR"と、"_"を使ってつなぎます。

後は、思いつくまま、このような規則が挙げられます。
・インデント(段下げ)をする。
・データ型を表す記号($,#,!)は、用いてはいけません。
・文字列の結合を表す"&"(アンパサンド)を用い、"+"では繋がない。
・2 byte文字は、コメント以外には使わない。
・適当な場所に、コメントを書くべきだが、全部に入れないこと。
・プロパティは省略をしない。
・VBAには、予約語の禁止という規則はありませんが、ワークシート関数名やVBA関数名などは、紛らわしいので使わないこと。例:Str (Str関数という古い関数がある)

なお、VBAは、大文字・小文字自体は関係がないとは言われますが、実際の場では、大文字・小文字を間違えて、動かないということもありますから、インテリセンスを用いない手入力の部分は、まず気をつけるに越したことはありません。(インテリセンス:入力候補の表示によるオートコンプリート機能、タイプミス補正機能のこと)

最後に、ご自身で、研究してみてください。
私自身は、それだけ書かれたVB.Netの規則本を持っていますが、それを、紹介するよりも、Microsoft の専門書やサイトがありますから、そこを参考にすると良いです。ただし、参考にするのは、msdn側であって、Microsoft.Support 側は、意外にも、アマチュアの方も参加して書いているようですから、あまり参考にはしないほうがよいでしょう。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2014/06/11 22:07

>何か参考となるサイトなどはありますでしょうか?


といわれて探してみましたが、特にこれというものがないですね。
確かに、変数名は自由ですので、決まりはないのでしょうね。
ただ
>現在VBAを勉強中の初心者です。
ということなので、以下のつもりでは如何でしょうか。
変数の型がわかり易い、意味がわかる。
よく使う変数では 文字型と数値型です。
数値型でも整数型は
nを使います。
エクセルですので行番号(列番号)を変数に入れることもあります。
行番号は Longを使いますので注意です。
MyRow(MyCol)などと行(列)であることがわかる名前が良いと思います。
For文では、決まりのように
For i=1 to ***
For j=1 to ***
For k=1 to ***
ですね。

文字列は、文字列であることがわかりやすいように
Strを頭に付けると良いと思います。

StrFileNameとかすると文字でファイルの名前とわかりやすいはずです。

定数は Contを頭に付けるのが定番です。

複雑なVBAを書くときにややこしくなるのがObject型やVarinat型です。
http://www.ken3.org/vba/backno/vba055.html
にあるように
Set oApp = CreateObject("Outlook.Application")
とアプリケーションにcApp
Set objMAIL = oApp.CreateItem(0)
オブジェクトに Objを頭に付けるのが多いようです。
そのほかに
シートは Ws
レンジは Rsではじめると覚えても良いでしょう。
これだけでも初心者ではないと思ってもらえます。

それと、むやみに変数への置き換えをしないことも一案です
Withと End Withも活用しましょう。
まあ、最初は使えれば良いとか動けば良いととかいうレベルでかまいませんが
そのうちに、もっとシンプルにしたいと思うようになります。
次のステップには、ほかの人にもわかりやすい(引継ぎしやすい)
となりますが、最初からそのようなことを考えていると進まなくなることが
ありますので
最初は、基礎知識の勉強
次に、実践で数をこなす(同じ目的のVBAを何度も作り直す)
です。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2014/06/11 22:07

こういう名前の付け方の規則のことを、命名規則とかネーミング規約とか言いますね。


http://ja.wikipedia.org/wiki/%E5%91%BD%E5%90%8D% …

VBAに限定して、参考になるサイトとしては、
http://officetanaka.net/excel/vba/variable/06.htm
http://home.att.ne.jp/zeta/gen/excel/c04p15.htm
あたりは、どうでしょう。

こういうのは、実際の開発現場ごとに結構違ったりするので、もし、仕事で勉強しているのであれば、上司・先輩・リーダー等に確認した方がいいと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2014/06/11 22:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!