• ベストアンサー

VBA 引数の簡単な命名規則ありますか?

Excel VBAで 簡単なプロシージャを作る時に引数名で詰まります。 関数化するなら引数は別に名前を付けたい。でも単純すぎてわざわざ別名が 思いつかない…できれば呼びだし元の変数名をそのまま使いたい hoge(text,loop) sub hoge( _text, _loop ) とかできればいいんですが先頭_(アンダーバー)ってダメなんですよね 最後_(アンダーバー)は行継続と紛らわしいし… いまんとこ、 定数UPPER 関数UpperCamelCase 変数loweCamelCase と簡単な程度なんですがなにか短くて気楽な引数の命名規則は無いもんでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.1

こんにちは 悩む意味が分からないです。 簡単なプロシージャなんでしょ? 呼びだし元の変数名、そのまま使ってもいいですし、 a とか bでも問題ないし。 誰でもが分かる、なんて独りよがりで他の人からみたら訳の分からない変数 にしても仕方ないでしょ。 同じ会社、開発部門だけで使うものなら命名規則作る意味はあるとは思いますが。

momono14
質問者

お礼

かぶらない名前を付けるのがセオリーと認識してましたが、 意図的に名前をかぶらせても考えてみればスコープが違うから 問題無いですね。 >誰でもが分かる、なんて独りよがりで他の人からみたら訳の分からない変数 >にしても仕方ないでしょ。 これは何のことを書かれているのかよく分かりませんでした。 「誰でもが分かる」とか質問に無いですよ? 今回は気づきをもらったこちらをBAとさせて頂きます。 ありがとうございました。

その他の回答 (1)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 何故「_(アンダーバー)」の様な使う事が出来ない記号に拘るのか意味が解りません。  別に規則というほどのものでは御座いませんが、 mytext myloop tmptext tmploop buftext bufloop text1 loop1 などでは駄目なのでしょうか?

momono14
質問者

お礼

返信ありがとうございます。 上でも書いてますが、変数はスコープの勘違いで名前の上書きを してしまい想定外のミスをやらかす可能性があるから 「必ず別の名前にする事」と思い込んでいたからです。 後はWebのサンプルとかで同一名をそのまま使ってる例を 見た事も無かったので… x=1 y=10 a = func(x,y) ------------ Function func(arg_x, arg_y) As String こんな風にぶつからない名前にするもんだと… 先頭アンダーバーのみの例は、邪魔にならずに 別名考えなくてもいいから楽でいいやと

関連するQ&A

  • ActionScript(3.0)の命名規則について

    flashデベロッパーの方に参考意見をいただきたいです。(それ以外の方も大歓迎です) 変数の命名規則なのですが、皆様はどのような形で規則性を持たせていますか?参考書などを見ると結構それぞれに違う規則があるように感じました。 例えば今自分が考えているモノとしては ・private変数には_hogeのようにアンダースコアを。 ・public変数は通常通りhogeで。(getterも同様に) ・クラス変数は__hogeのようにアンダースコア2つで。 このくらいしか分類していないのですが、他にも引数やローカル変数にはこれがいい、とか、その他慣例やおススメがあれば是非ご意見をいただけますでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • VBAでの戻り値と引数について

    最近VBAでプログラムを勉強しています。 引数と戻り値について教えてください。 定義としては、 引数:プロシージャに渡される定数、変数、および式。 戻り値:呼び出し元に処理の結果を戻す値。 となっているのですがいまいちピンときません。 SubプロシージャとFunctionプロシージャでその違いがあると思うのですが、具体的にどれが引数でどれが戻り値なのかわかりません。 他のプログラミングも全く経験がない初心者で初歩的な質問ですみませんがご教授お願いします。

  • 変数・関数その他の命名規則

    SharpDevelop(VB.NET)であるプログラムのソースを書いています。ビルド自体はできます。 先日、色々うろついていてFxCopと言うものを知り、実行してみると出るわ出るわ警告の山。一つ一つ片付けていきたいと思います。 でまぁ、現在以下のエラーが出ています。 IdentifiersShouldBeCasedCorrectly 大文字小文字をきちんと意識して書け、ということなのは何となくわかるのですが、どう直して良いかわかりません。また何故直すべきなのかも判りません。 直し方を教えてください・・・・というのは質問ではなく。 この警告に限らず、FxCopが良いとする変数・定数・関数・クラス名・列挙型etcの命名規則(理由 & 具体例)はどのようなものなのでしょうか?何か文献はありますか?FxCopのヘルプにはソレっぽい記述がある気がしないので・・・

  • VB初心者の私に教えてください!

    最近VBを始めたんですけど、関数 定数 変数 引数 の意味がよく理解できません・・・。値を返すとか戻り値とか、あとプロシージャを作るってどういうことですか?なにかにたとえて教えてくれればうれしいです! お願いします(^。^)

  • 関数の仮引数は宣言か式か

    ”関数の仮引数の宣言”は”変数の宣言・定義”と同じように”宣言”と明確に考えるべきなのか”関数の仮引数”を”式”と考えて良いのかという問題です。 私が迷ってしまったのは"配列を仮引数"にとった例です。 規則として ”int a[ ] が int *a と同じ意味になるのは、唯一、関数の仮引数の宣言のばあいだけである”という規則がありますが、これは”関数の仮引数の宣言”は変数の宣言・定義”と同じように”宣言”と明確に考えている例だとおもいます。 int a[ ] が int *a と型名 変数名(引数名)と宣言の形をとっているので当然だと思いますが、一方 配列は、式の中で「先頭へのポインタ」によみかえられる。               ↓ 関数の引数は式なので、配列は「先頭へのポインタ」に読み変えられる←引数部分を”宣言”ではなく”式”と捉えてる←ここが私の迷っているところ               ↓ よって、関数に渡ってくるのは、結局はつねにポインタだ。 という説明もあります。 私の今までの理解ではc言語では”宣言の部分”と”式”の部分は明確に区別されるものと考えていました。”宣言部分の初期化の="と”代入の=”とは明確に区別されていました。 それと同じように”関数の仮引数の宣言”は”宣言部分”と捕らえるのか”式”ととらえるのか ”宣言”と”式”が私の頭の中混乱しています。 宜しくお願いします。

  • C言語の関数の実引数と仮引数の名前について

     C言語で関数を使う場合、実引数と仮引数の名前(変数名)は、変えなければならないのでしょうか、同じでもいいのでしょうか。C言語のルールでは、どうなっているのでしょうか。よろしくお願い致します。

  • プロシージャの引数について

    DB : SQL Server 2005 プロシージャの引数にCSVファイルのフルパスを入れたいのですが、 エラーが出て困っています。 http://questionbox.jp.msn.com/qa262720.html ↑の回答も参考にしましたが、どうしても出来ません。 最初は以下のように書いていました。 BULK INSERT IDATA from ''+ @pass + '' with ( fieldterminator = ',', rowterminator = '\n' ) このときは、プロシージャを作る段階で↓のエラーメッセージが出ました。 >メッセージ 1038、レベル 15、状態 1、プロシージャ sss、行 30 オブジェクト名または列名がないか、空です。SELECT INTO ステートメントの場合は、各列に名前が付いていることを確認してください。その他のステートメントの場合は、空の別名を検索してください。"" または [] で定義された別名は許可されません。別名として、名前または 1 つのスペースを追加してください。 >メッセージ 319、レベル 15、状態 1、プロシージャ sss、行 30 キーワード 'with' 付近に不適切な構文があります。このステートメントが共通テーブル式または xmlnamespaces 句の場合、前のステートメントをセミコロンで終了してください。 また、上記の回答を参考にしたところ、プロシージャは作成できましたが、 引数を与えて実行する段階で↓のエラーメッセージが出ました。 >メッセージ 203、レベル 16、状態 2、プロシージャ sss、行 32 名前 'BULK INSERT IDATA from '\\・・・\・・・\取込.csv' with ( fieldterminator = ',',rowterminator = '\n')' は有効な識別子ではありません。 引数で与えるのでなく、直接入力した場合は出来ます。 よろしくお願いします (><)

  • テンプレート引数の型推測

    コンパイラはVC++2008です。 いろいろあって、あるクラスにおいて関数ポインタと関数オブジェクト双方を 同じように利用できないかと考えて、次のように試みました。 class Base { public:     virtual void func() =0; }; template<class Func> class CFunc :public Base { private:     Func m_func; public:     CThreadFunc(Func func):m_func(func){}     void func(){m_func();} }; class Hoge { private:     Base* base; public:     template<class Func>     Hoge(Func func)       :base(new CFunc<Func>(func))     {}     ~Hoge()     {       delete base;     }     void DoSomething()     {       base->func();     } }; クラスをテンプレートにするといちいち指定しなければならないので、 まず基底クラスに適当な仮想関数を設け、それを継承したクラスをテンプレートにしました。 そしてコンストラクタの引数で何かしらを受け取って、オーバーライドした関数の中で 関数ポインタか関数オブジェクトだと仮定して呼び出しています。 さらに基底クラスのポインタを目的のクラスが保持してやり、 こちらはコンストラクタをテンプレートにすることで引数から型を推測してもらうことで 先ほどのテンプレートクラスのインスタンスを作成しています。 そしてポインタを介してfunc()を使ったり…、などすれば、 とりあえず引数なしの関数と関数オブジェクトを同等に扱えないかなと思ったからです。 で、このようなクラスを作成してコンパイルすると、 void func(); //何かしら処理する関数 class Function { public:   void operator ()();  //何かしら処理する関数オブジェクト }; があったとして、 int main() {   Function function;   Hoge hoge(function); //いったん作ってから渡す   Hoge hoge2(func); //関数を渡す     hoge.DoSomething();   hoge2.DoSomething();    } は動きました。しかし、 int main() {   Hoge hoge(Function()); //引数を初期化する } とすると次のようなエラーが出ます。 warning C4930: 'Hoge hoge(Function(__cdecl *)(void))': プロトタイプされている関数が呼び出されませんでした (変数の定義が意図されていますか?) また、 int main() {   Hoge hoge(Function()); //引数を初期化する   hoge.DoSomething();  //クラスにアクセス } とすると次のようなほかのエラーが出ます。 error C2228: '.DoSomething' の左側はクラス、構造体、共用体でなければなりません。 しかし、例えば関数オブジェクトのコンストラクタに引数が設定されていたとして、 class Function { public:   Function(int dummy);  //何か値を受け取る   void operator ()();  //何かしら処理する関数オブジェクト }; となっていた時、 int main() {   Hoge hoge(Function(1)); //引数を初期化する   hoge.DoSomething();  //クラスにアクセス } の呼び出しは正常にコンパイルされ、想定通りの動きをします。 全く使わなくても、一つ以上の適当な引数を何でもいいからコンストラクタが持てば、 普通にコンパイルされるみたいです。ただ、デフォルト引数を与えてHoge hoge(Function())と 同じ形ですと引数があってもできないみたいです。 まったく通らないなら最初からあきらめるですが、中途半端にちゃんと動くために エラーの原因を知りたいと思っています。 テンプレートの場合には、引数に渡すタイミングで初期化はしてはいけないのでしょうか?

  • VBA超初心者の質問ですけど・・・

    VBAを勉強しています。超初心者の質問なんですけど、モジュール 変数 引数 関数 定数 このへんのことがごっちゃでよく区別がつきません。軽い説明でもいただけたらうれしいです!教えてくださいm(__)m

  • VBA 変数・定数名の付け方

    いつもお世話になっております。 現在VBAを勉強中の初心者です。 変数や定数名について質問させていただきます。 自分でコードを作成した場合、変数名や定数名について、『何にしようか?』と結構な時間迷ってしまします。 決められたルールの中であれば、自由に命名して良いのでしょうが、参考書等を見ると同じような役割の変数・定数には似通った名前がつけられているように見受けられます(まあ当然かもしれませんが・・・) 私も今後の事を考えて、規則?に沿った名称を使って行きたいと考えています。 何か参考となるサイトなどはありますでしょうか? どうぞよろしくお願いいたします。

専門家に質問してみよう