
いつもお世話になっております。
現在VBAを勉強中の初心者です。
変数や定数名について質問させていただきます。
自分でコードを作成した場合、変数名や定数名について、『何にしようか?』と結構な時間迷ってしまします。
決められたルールの中であれば、自由に命名して良いのでしょうが、参考書等を見ると同じような役割の変数・定数には似通った名前がつけられているように見受けられます(まあ当然かもしれませんが・・・)
私も今後の事を考えて、規則?に沿った名称を使って行きたいと考えています。
何か参考となるサイトなどはありますでしょうか?
どうぞよろしくお願いいたします。
No.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 側は、意外にも、アマチュアの方も参加して書いているようですから、あまり参考にはしないほうがよいでしょう。
No.2
- 回答日時:
>何か参考となるサイトなどはありますでしょうか?
といわれて探してみましたが、特にこれというものがないですね。
確かに、変数名は自由ですので、決まりはないのでしょうね。
ただ
>現在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を何度も作り直す)
です。
No.1
- 回答日時:
こういう名前の付け方の規則のことを、命名規則とかネーミング規約とか言いますね。
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
あたりは、どうでしょう。
こういうのは、実際の開発現場ごとに結構違ったりするので、もし、仕事で勉強しているのであれば、上司・先輩・リーダー等に確認した方がいいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 複数ブックの統合について Excel VBA 1 2022/05/13 09:48
- その他(Microsoft Office) 従業員増減対応で当番種類の増減対応な当番表 21 2022/07/19 07:30
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 1 2022/06/18 21:20
- Access(アクセス) Access VBA を利用して、フォルダ内のファイルの名称を変更したい 1 2023/08/03 08:27
- Visual Basic(VBA) 【VBA】複数行あるカンマ区切りのデータを全て縦に一列に並べたい 5 2022/04/13 17:03
- 統計学 この統計の問題について教えてください 9 2023/07/04 17:02
- Excel(エクセル) マクロ/VBAについて教えてください。 10 2022/05/27 12:59
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Excel(エクセル) Excel ある複数列に数値を入力した際に、別の列に本日の日付を入力したいです 7 2023/03/01 23:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
winからmacへの辞書データ移行方法
-
特定のサイトにアクセスしよう...
-
日本語で作ったwordファイルな...
-
「多言語」と「他言語」の違い...
-
usbメモリに保存したファイルを...
-
イタリア語に訳せていますか?
-
台湾人女性と付き合ってる方
-
単一言語国家
-
ポルトガル語で…
-
kindleアプリで洋書を翻訳する方法
-
こちらの韓国語は日本語に訳す...
-
和訳の課題をもしGoogle翻訳で...
-
一人称のない言語は存在しますか?
-
谷川俊太郎って
-
無料翻訳サイトについて
-
「希望」のフランス語訳、また...
-
windows10 でcortanaを停止させ...
-
生成文法で用いる樹形図(?)...
-
シナ語、朝鮮語、日本語~やか...
-
借用語の歴史
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Word内の単語をExcelシート内の...
-
英語の参考文献で大文字にする...
-
ギリシャ語で絶望はなんと言う...
-
これは私の一冊の本です。
-
英語について質問
-
英文の中に含まれているいろん...
-
「ボランティア申込み」を英語...
-
"ture" で終わる単語
-
VBA 変数・定数名の付け方
-
大文字を使う場合って?
-
mailの最初は大文字ですか?
-
winからmacへの辞書データ移行方法
-
自立語/付属語という品詞区分...
-
イタリア語単語の意味
-
単語出現回数カウントソフト
-
中1の国語 単語に分けるとき、 ...
-
英検の勉強方法で私は問題集単...
-
国際音声記号の読み上げについて
-
[MS-IME]『単語の登録』の「品...
-
単語の定義とは何ですか
おすすめ情報