題名のようなことを考えて、実験的にやってみたのですが、これにまつわる不具合の情報をお持ちでしたら聞かせていただきたいのです。ネット上を漁った限りでは、内部処理がUnicode化されているので問題はないという話と、使えるけどやっちゃダメ的な精神論が出てくる程度で、それが原因でトラブった事例は見かけなかったため、おそらく問題はないだろうと思ってはいるのですが。なおExcel2010より古い環境のことは無視してOKです。
私個人は全角変数名は何となく気味が悪いと思っているくちですが、マクロの引き継ぎを行う必要に迫られ、そこで日本語変数名を使ってみようとしている次第です。特定部署でのみ使用している帳票(印刷するのでデータは50行前後)から、条件に沿ってデータを引っ張ってくるマクロを自作して利用しているのですが、マクロ作者たる私が異動となることとなり、帳票フォーマット変更などのメンテを、残った人員に引き継ぐ必要に迫られています。
部署内に残る人員ではまともにマクロを自作できる者はおらず、かろうじて作られたものを触る程度が可能なくらいです。と言う状況で、残った人員が少しでも修正が容易にできるように、変動要素のあるものは全て定数にしてマクロ先頭に集めたり、しこたまコメントを付けたりはしているのですが、ふと、
「変数名を日本語化したら、入門者には読みやすいのでは?」
と思って実験的にやってみました。こんな感じです。
Const 開始行=10
Dim 終了行 As Long
Dim 行カウンタ As Long
終了行=開始行+30
For 行カウンタ=開始行 To 終了行
(実処理)
Next
これを見て正直なところ、「やべ、俺自身にも解りやすいわwww」って思っちゃいました。これだったら概念説明が非常にやりやすい。動作上も問題ないし、特にやばい話も聞こえてこないなら、このまま行っちゃえと。
なので冒頭でも触れたように、精神論的やっちゃダメ以外の情報を求めます。なお同意意見でもけっこうです。
No.1ベストアンサー
- 回答日時:
苦い経験がありますので、やらないほうがいいです。
Access97のVBAで、変数名に全角を使っていました。Accessのバージョンが上がっても10年以上問題なく使えていました。
Access2007までは、そのまま読み込めていたのですが、Access2010では、全角の変数名を使った部分が欠損して、プログラムが動作しなくなりました。
「銘柄コード」が「銘柄コ」にすべて化けてしまいました。
もともと、全角文字を想定していないシステムですので、このような不備は他の開発環境でもよく見られます。
マイコンの開発環境のMPLAB X IDEを趣味でつかうのですが、これも全角文字が化けることがあります。しかも、特殊な条件の時のみ化けるのでたちが悪いのです。
また、フォルダ名に全角文字が含まれている場合に、パス文字列が化けてちゃんと動作しないこともあります。
この回答への補足
そろそろ出尽くした感があるので、締め切ります。どの回答も有益でしたので、ベストアンサーは先着順としますが、お三方には等しくお礼申し上げます。
補足日時:2014/06/01 20:38回答ありがとうございます。
> Access97のVBAで、変数名に全角を使っていました。
それはそれで動いていたことの方が驚きです。その当時だと、文字コードは多分sjisだったでしょうから、変数に使えない文字パターンもあったんじゃないですか?2007までは大丈夫だったけど…という話では、ちょうどVisualStudioもVB6のインポート機能がなくなったのが2010からなので、微妙に関係してそうな気もしたりしなかったり…
> フォルダ名に全角文字が含まれている場合
ああ~、それは確かに危険な香りがしますね。ただ今回はVBAだし、外部ファイルに触りに行くことは一切ないので、大丈夫です。隣のシートを覗きに行くことはしていますが、そこで漢字使うなと言われたらそれは大変困ります…まあパス区切り文字とかは入らないので平気でしょう。平気であってくれ。
ともあれ参考になりました。ありがとうございました。
No.5
- 回答日時:
問題が出た経験はないですね。
Access 2010 にバージョンアップした時に全角のプロシージャ名が壊れた経験がありますが、2010 を出発点とするなら問題ないと思います。
入力を変換確定させるまでインテリセンスの候補に出ないとかの細かなデメリットはありますが、半角アルファベットで変数名の名前付けに迷ったり、変な名前を使われるよりはメリットがあると思います。
"全角文字を使う" というよりは "日本語を使う" というルールの方が分かりやすいかな?
本当の敵は "ローマ字読みの変数名を使いたがる人" だと思う・・・
回答ありがとうございます。
> Access 2010 にバージョンアップした時に全角のプロシージャ名が壊れた経験がありますが、2010 を出発点とするなら問題ないと思います。
2007などから2010への移行云々って件ですね?やはり2010にはその辺何かありそうな…問題ないはずだとは言いつつ、移行で問題が生ずると。
> 本当の敵は "ローマ字読みの変数名を使いたがる人" だと思う・・・
以前どこかで、日本人なのにソースのコメントをロシア語で書く人がいる、と言う話を聞いた記憶があります。それに比べればまだ、saisyuugyou くらいは全然可愛げがありますね。
No.4
- 回答日時:
No2です
本論から外れちゃいますけどちょっとだけ
> 文字列の中に全角のダブルクォートを書いたらどうなるのかはちょっと気になりますけど。
文字列の中で Msgbox "あい”うえ" みたいにするととその時点でコンパイルエラーになります。「"”"」 と書くと「""""」に強引に変換されますし、Chr(&H8168)と書かないと駄目みたいで、これはこれでコード調べないといけないので面倒ですね。
回答ありがとうございます。わざわざ試していただいたんですね。
全角であってもダブルクォートは半角に強制変換ですか、それはそれで面倒な仕様かも…Chr関数じゃないとだめなんだったら、全角なんて文字コードを考えると怖くて使えませんね。
No.3
- 回答日時:
No.1です。
私は、全角で始まる変数名は決してつけませんでした。変数の型が分からなくなるためです。
Dim str名前 As String
Dim int人数 As Integer
Dim blnフラグ As Boolean
・・・などです。
先頭に半角文字を付けることによって、不具合を回避していたのだと思います。(たぶん当時そういう回避策を調べて知っていたような気がします。)
Access97で不具合が出なかったのはこのためです。
今はVBAはほとんど使わなくなりました。組み込みのC言語専門です。
回答ありがとうございます。
なるほど、型の識別も兼ねて半角で始めるですか…変数の型そのものはさんざん意識していますが、変数名から型の識別を行えるようにするという発想はしたことがありませんでした。不用意な暗黙変換を回避したい時に応用できそうですね。
No.2
- 回答日時:
変換が面倒というのと、日本語入力のまま変数以外の部分(行カウンタ=開始行)とか入力してしまってエラーになってしばらく悩む…のかと思ったら2013だけど勝手に=にしてれくれました。
””も""に…知らなかった。Range("h3:H1000")もエラーにならない…勉強不足でしたすみません。とすれば、やはり変換が面倒くらいでしょうか。ローマ字でもわかり易いような気がします。
回答ありがとうございます。
> 変換が面倒というのと、日本語入力のまま変数以外の部分(行カウンタ=開始行)とか入力してしまって
それも確かにありがちですね。以下みたいな類似パターンも要注意だと今思いました。
カウンタ1 = 1 ←(変数名の数字は半角)
カウンタ1 =1 ←(変数名の数字が全角)
私は絶対に Option Explicit を付けてマクロを書くのでエラーで引っかけられますが、ぱっと見では気付かないかも知れないので。
> 2013だけど勝手に=にしてれくれました。””も""に…知らなかった。Range("h3:H1000")もエラーにならない…勉強不足でしたすみません。
いや、それは私も初めて知りました。有益な情報に感謝です。文字列の中に全角のダブルクォートを書いたらどうなるのかはちょっと気になりますけど。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 文字に半角が含まれて...
-
英数字のみ全角から半角に変換
-
住宅にカナを入力する際に丁目...
-
IEからEdgeへの移行に伴うIMEの...
-
プログラミングでは、半角括弧...
-
「一角」って何でしょうか
-
C言語のコンパイルエラーなん...
-
Accessで日付や数値を全角で表...
-
SQLServerのNULLのデータと空文...
-
VB.net、テキストボックス入力...
-
word差し込み印刷 半角カタカ...
-
F9キーについて。
-
COBOL・全角判定
-
Pythonにおける全角括弧の正規表現
-
明細書の英数字の全角・半角に...
-
.NET3.5におけるキーボードの「...
-
エクセルの検索が正しくできな...
-
封筒の宛先で縦書きの書き方
-
[VBScript]バイト長の判定
-
エクセルにMicrosoft Barcode C...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
英数字のみ全角から半角に変換
-
住宅にカナを入力する際に丁目...
-
VBA 文字に半角が含まれて...
-
エクセルにMicrosoft Barcode C...
-
IEからEdgeへの移行に伴うIMEの...
-
プログラミングでは、半角括弧...
-
エクセルでの”々”の扱い
-
COBOL・全角判定
-
全角英数字の必要性が理解できない
-
全角入力
-
word差し込み印刷 半角カタカ...
-
封筒の宛先で縦書きの書き方
-
.NET3.5におけるキーボードの「...
-
VB.net、テキストボックス入力...
-
メモ帳の段落の揃え方
-
Accessで日付や数値を全角で表...
-
LaTeXで半角カンマと全角カンマ...
-
いまスマホからカードの申込み...
-
perl 初めてのプログラムにエラ...
-
Accessでのグループ化で全角・...
おすすめ情報