- ベストアンサー
ExcelVBA変数名の全角可否とその影響について
- Excel2010以降で日本語変数名を使うことの可否について情報をお持ちですか?問題はないとの情報がありますが、具体的なトラブル事例について知りたいです。
- Excel VBAのマクロで日本語変数名を使用することで、読みやすいコードを作成することができます。特に異動などでマクロを引き継ぐ必要がある場合には、修正が容易になります。
- Excel VBAのマクロで日本語変数名を使用することは、特に問題がないとされています。Unicode化された内部処理により、全角文字を使用することができます。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
苦い経験がありますので、やらないほうがいいです。 Access97のVBAで、変数名に全角を使っていました。Accessのバージョンが上がっても10年以上問題なく使えていました。 Access2007までは、そのまま読み込めていたのですが、Access2010では、全角の変数名を使った部分が欠損して、プログラムが動作しなくなりました。 「銘柄コード」が「銘柄コ」にすべて化けてしまいました。 もともと、全角文字を想定していないシステムですので、このような不備は他の開発環境でもよく見られます。 マイコンの開発環境のMPLAB X IDEを趣味でつかうのですが、これも全角文字が化けることがあります。しかも、特殊な条件の時のみ化けるのでたちが悪いのです。 また、フォルダ名に全角文字が含まれている場合に、パス文字列が化けてちゃんと動作しないこともあります。
その他の回答 (4)
- x-1919
- ベストアンサー率52% (91/173)
問題が出た経験はないですね。 Access 2010 にバージョンアップした時に全角のプロシージャ名が壊れた経験がありますが、2010 を出発点とするなら問題ないと思います。 入力を変換確定させるまでインテリセンスの候補に出ないとかの細かなデメリットはありますが、半角アルファベットで変数名の名前付けに迷ったり、変な名前を使われるよりはメリットがあると思います。 "全角文字を使う" というよりは "日本語を使う" というルールの方が分かりやすいかな? 本当の敵は "ローマ字読みの変数名を使いたがる人" だと思う・・・
お礼
回答ありがとうございます。 > Access 2010 にバージョンアップした時に全角のプロシージャ名が壊れた経験がありますが、2010 を出発点とするなら問題ないと思います。 2007などから2010への移行云々って件ですね?やはり2010にはその辺何かありそうな…問題ないはずだとは言いつつ、移行で問題が生ずると。 > 本当の敵は "ローマ字読みの変数名を使いたがる人" だと思う・・・ 以前どこかで、日本人なのにソースのコメントをロシア語で書く人がいる、と言う話を聞いた記憶があります。それに比べればまだ、saisyuugyou くらいは全然可愛げがありますね。
- kkkkkm
- ベストアンサー率66% (1725/2595)
No2です 本論から外れちゃいますけどちょっとだけ > 文字列の中に全角のダブルクォートを書いたらどうなるのかはちょっと気になりますけど。 文字列の中で Msgbox "あい”うえ" みたいにするととその時点でコンパイルエラーになります。「"”"」 と書くと「""""」に強引に変換されますし、Chr(&H8168)と書かないと駄目みたいで、これはこれでコード調べないといけないので面倒ですね。
お礼
回答ありがとうございます。わざわざ試していただいたんですね。 全角であってもダブルクォートは半角に強制変換ですか、それはそれで面倒な仕様かも…Chr関数じゃないとだめなんだったら、全角なんて文字コードを考えると怖くて使えませんね。
No.1です。 私は、全角で始まる変数名は決してつけませんでした。変数の型が分からなくなるためです。 Dim str名前 As String Dim int人数 As Integer Dim blnフラグ As Boolean ・・・などです。 先頭に半角文字を付けることによって、不具合を回避していたのだと思います。(たぶん当時そういう回避策を調べて知っていたような気がします。) Access97で不具合が出なかったのはこのためです。 今はVBAはほとんど使わなくなりました。組み込みのC言語専門です。
お礼
回答ありがとうございます。 なるほど、型の識別も兼ねて半角で始めるですか…変数の型そのものはさんざん意識していますが、変数名から型の識別を行えるようにするという発想はしたことがありませんでした。不用意な暗黙変換を回避したい時に応用できそうですね。
- kkkkkm
- ベストアンサー率66% (1725/2595)
変換が面倒というのと、日本語入力のまま変数以外の部分(行カウンタ=開始行)とか入力してしまってエラーになってしばらく悩む…のかと思ったら2013だけど勝手に=にしてれくれました。””も""に…知らなかった。Range("h3:H1000")もエラーにならない…勉強不足でしたすみません。 とすれば、やはり変換が面倒くらいでしょうか。ローマ字でもわかり易いような気がします。
お礼
回答ありがとうございます。 > 変換が面倒というのと、日本語入力のまま変数以外の部分(行カウンタ=開始行)とか入力してしまって それも確かにありがちですね。以下みたいな類似パターンも要注意だと今思いました。 カウンタ1 = 1 ←(変数名の数字は半角) カウンタ1 =1 ←(変数名の数字が全角) 私は絶対に Option Explicit を付けてマクロを書くのでエラーで引っかけられますが、ぱっと見では気付かないかも知れないので。 > 2013だけど勝手に=にしてれくれました。””も""に…知らなかった。Range("h3:H1000")もエラーにならない…勉強不足でしたすみません。 いや、それは私も初めて知りました。有益な情報に感謝です。文字列の中に全角のダブルクォートを書いたらどうなるのかはちょっと気になりますけど。
お礼
回答ありがとうございます。 > Access97のVBAで、変数名に全角を使っていました。 それはそれで動いていたことの方が驚きです。その当時だと、文字コードは多分sjisだったでしょうから、変数に使えない文字パターンもあったんじゃないですか?2007までは大丈夫だったけど…という話では、ちょうどVisualStudioもVB6のインポート機能がなくなったのが2010からなので、微妙に関係してそうな気もしたりしなかったり… > フォルダ名に全角文字が含まれている場合 ああ~、それは確かに危険な香りがしますね。ただ今回はVBAだし、外部ファイルに触りに行くことは一切ないので、大丈夫です。隣のシートを覗きに行くことはしていますが、そこで漢字使うなと言われたらそれは大変困ります…まあパス区切り文字とかは入らないので平気でしょう。平気であってくれ。 ともあれ参考になりました。ありがとうございました。
補足
そろそろ出尽くした感があるので、締め切ります。どの回答も有益でしたので、ベストアンサーは先着順としますが、お三方には等しくお礼申し上げます。