• ベストアンサー

EXCELのVBAについて

エクセルでVBAを使う場合に、変数や関数名に日本語を使うことが出来るみたいであまり知らなかったのですが、これは正式に使ってよい物なのでしょうか。わかる範囲で本などを調べてもこのことに触れてない(気が付かないだけかな?)ものですから、もし定義なりルールなりがあるようでしたら教えてください。

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

  • ベストアンサー
回答No.1

構わないっちゃぁ構わないです。 ただし、先頭の文字として使っちゃいけない数字や記号は全角でも使わないほうがいいです。 ただ私は全角の変数名は使いませんし、自分のチームでも使用禁止として指導しています。 "見やすい" "すぐに変数名などを考えられる" というメリットはありますが、"見やすい" に関しては慣れ、"すぐに変数名を考えられる" に関してはチーム(または個人)で辞書を作っていくことで対応できます。 で、デメリットですが、 ・英数記号の部分を全角にすると見づらい ・インテリセンス機能での選択候補が使いづらくなる ・大文字小文字の自動訂正が効かない ・英数記号の全角と半角を同一文字とするかの解釈がバージョンによって違う。(Access 97 用の MDB を Access 2000 形式に変換できなかった) などがあります。

nac03056
質問者

お礼

さっそくお答えをいただき申し訳ありません。 バージョンの違いの問題は、知人のSEの愚痴からもいくらか想像していたのですが、やはりあるのですね。実際の現場の方の答えがいただけるとは心強い限りです。 ありがとうございました。

その他の回答 (1)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 >これは正式に使ってよい物なのでしょうか VBA自体に正式というような世界はないような気がしますが、人様に見せるようなものは、2バイト文字のプロシージャ名や変数に使うべきではないでしょうね。コーディング・ルールとしては使ってはいけないことになっていますが、それで、ほとんど問題が起こるわけではありません。逆に、何がトラブルが起こるのかわかりません。 ただ、全てを英語で使うというルールを徹底したら、今度は、英語力が問題になりますね。 例えば、 × Sub Zaiko() ○ Sub Stock() っていうのがあると、厳密に言えば、それは、正しいのか危ないなって思います。Stock = 在庫という訳付けは、いかにも日本人の発想で、Stockというと別の意味を連想させます。 一応、プロシージャー名で、その作業を類推できるような書き方が望ましいとされていますが、キリがない話です。 >定義なりルールなりがあるようでしたら 他には、まあ、プロシージャ名は、 stock → Stock というように、大文字・小文字を混在して書くとか言われますね。変数ですと、myTime や MyTime(my = ローカル変数)のようにすれば、変数名を間違えた時に、小文字なら小文字だけになるので、すぐわかるとか。他にもいろいろあるけれど、VBAの場合は、チームで製作することは、めったにないので、自分なりの使いやすいルールをいくつか使えば、その方式でも構わないと思います。 >わかる範囲で本などを調べてもこのことに触れてない 大村あつしさんの『かんたんプログラミング Excel VBA 基礎編』(技術評論社)に、そのことについては、触れられているはずです。

nac03056
質問者

お礼

ありがとうございます。 参考にさせていただきます。

関連するQ&A

  • エクセルvbaの変数について

    エクセルVBAについて、同じ型の値が複数列あった際に、変数に取り入れる方法として、それぞれ一つずつ別々に変数に入れる場合と、ユーザー定義型変数を定義して入れる場合の二つがあると思いま すが、どちらの方がメモリを使わなくて済むのでしょうか。また、他にも長短があればご教示下さい。

  • VBAでの0のデータ型は

    VBAの初心者です。ExcelのVBAで小数点2桁の変数Xのデータ型を宣言したいのですが、このXは”0”の時もあります。 このような時はこの変数の型はどのように宣言したら良いのでしょうか、定義では、”Single”には正の範囲と負の範囲があって”0”がないようなのですが?

  • エクセルのVBAでオブジェクトの配列変数は使えますか?

    VBですとオブジェクトの配列変数というか、コピーしたときに自動的に配列になってしまいますが、エクセルのVBAの場合でオブジェクトの配列変数は使えますか? なにをしたいかというと、ボタンが多すぎて一つ一つにプログラム定義は面倒、そこで配列にしてまわすことにしたいのですが、エクセルで可能でしょうか。 どなたかお願いします。

  • VBAの中でユーザー定義関数を使うときに

    VBAの中でユーザー定義関数を引数に変数を持たせて使いたいのですが、変数をうまく認識してくれません。 VBAの中でユーザー定義関数を使うにはどうしたらいいのでしょうか? よろしくお願いします。

  • エクセル VBA ' " ! & の使い方

    エクセル VBA ' " ! & の使い方 VBAを独学で勉強している、超初心者です。 同じシート内でのVBAを作るのはなんとなくできるようになったのですが、別のシートのデータを参照したいときなど、(シート名を変数にしています)うまく動作できません。 ' " ! & の使い方をやさしく解説してください。 よろしくお願いします。

  • Excel VBAでグローバルな変数はどこで宣言すべきか?

    Excel VBAについての質問です(もしかするとExcelに限った話ではないかもしれません)。 宣言セクションで変数の宣言を行うとき、Publicステートメントをつけた場合の適用範囲(グローバルな範囲)がわかりません。 これは、Sheet、ThisWorkbook、標準モジュールなど、それぞれの宣言セクションの場合で違うのでしょうか? また、宣言が有効になるタイミングも違うのでしょうか? ネットで調べたり、本で調べたのですが、私の理解が不足しているのか、矛盾して書かれているように思います。 一方では全てでグローバルにあるように書かれているように思え、一方ではグローバルになる範囲が違うとかかれているように思うのです。 試してみてもいいのですが、確証がもてないままこれから使い続けるのは気持ち悪いので・・・。 ご回答いただけると幸いです。よろしくお願いします。

  • エクセルVBAでの変数のスコープ

    基本的なことなのですが、教えて下さい。 当方、PHPやjavascriptを中心にプログラムしてきたのですが、 今回、エクセル+VBAでプログラムすることになり、VBAを勉強しているところなのですが、ちょっと戸惑っています。 いままでは、グローバル変数をなるべく使わないように、プログラミングをしてきたのですが、 VBAの勉強で、参考にしている本のコードは、全てグローバル変数を使っています。 そもそも、エクセルのシート・セルがグローバル変数のようなもの(?)なので、変数のスコープにこだわってもあまり意味がないのかな?とも思います。 エクセル+VBAである程度の規模のプログラムを作る際、 変数のスコープはどのように使い分けるのが良いのでしょうか? すみませんが、ご教授の程、よろしくお願いします。

  • エクセルVBA関数で解説をつける

    エクセルで最初からある組み込み関数には小さいウィンドウ(なんと言うのか忘れました)から入力する時関数や各変数に解説がついていますよね。(添付画像にあるようなの) VBAで作った自作関数にもあれを入れるにはどうすればいいのですか?

  • エクセルのVBAについて

    エクセルのVBAである行の最終セルを調べるのと、列を一列消去するような関数はあるのでしょうか?本を読んでものっていませんでした。わかる方よろしくおねがいします。

  • Excel VBA Cells 絶対参照 書き方

    Excel VBAにてお尋ねいたします。 Excel VBAにてCellsを使用してセル範囲を指定させていただく際に、絶対参照($A$1:$E$10など)を使用する場合はどのように記述すればよろしいでしょうか? Cellsを使用するのは、セル範囲が毎回異なるため、範囲指定に変数を使用しているためです。 相対参照でしたら、Range(Cells(1,1),Cells(Rows<行番号の変数>,Cols<列番号の変数>))といった記述かと思いますが、絶対参照の場合はどのように記述すればよろしいでしょうか?

専門家に質問してみよう