

題名のようなことを考えて、実験的にやってみたのですが、これにまつわる不具合の情報をお持ちでしたら聞かせていただきたいのです。ネット上を漁った限りでは、内部処理が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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel マクロで For 文のインデックスを先に宣言する理由 7 2022/08/27 00:26
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- 教育・文化 高校生です。将来政治家になって犯罪率を0.0%代にしたいのですが、可能だと思いますか? ㅤ 大まかな 8 2022/08/27 18:51
- 発達障害・ダウン症・自閉症 中学の時にIQ82の境界知能と診断されました。 今の私も、やはり境界知能でしょうか? そしてこれは、 3 2023/02/19 00:37
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- HTML・CSS WEBサイトの構築。表示データとWEBデザインを分離する考え方を専門用語・業界用語では何と言うか? 8 2022/09/27 09:16
- デスクトップパソコン 「自動修復でPCを修復できませんでした」と表示されPCが起動しないのですが対処法はありますか? 5 2022/05/13 09:16
- Excel(エクセル) excelの列幅高さが勝手に変わる(特定のPCだけ) 8 2022/07/14 16:51
- 大学・短大 続報 以前大学編入後に生じた問題から、こちらに質問 させていただいたものです。 詳しくご存知ない方に 1 2023/06/24 15:19
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/10 09:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 文字に半角が含まれて...
-
Pythonでテトリスを作っている...
-
正規表現の全角、半角、大文字...
-
文字間の空白(スペース)の使...
-
エクセルのセル表示のユーザー...
-
全角英数字の必要性が理解できない
-
数字を全角で書くのは何が悪い...
-
全角/半角キーをSendkeys関数で...
-
数値から 全角数値、漢数字に変換
-
ACCESS:半角、全角空白スペース...
-
Accessのテキストボックスの入...
-
ExcelVBA:KeyCode「半角/全角...
-
[Excel VBA] ODBCによる外部デ...
-
ASPで全角数字を半角数字にする...
-
いまスマホからカードの申込み...
-
ログインする際のIDやパスワー...
-
word差し込み印刷 半角カタカ...
-
LaTeXで半角カンマと全角カンマ...
-
LaTeX TeXShop「''」の入力方法
-
全角入力
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
住宅にカナを入力する際に丁目...
-
英数字のみ全角から半角に変換
-
IEからEdgeへの移行に伴うIMEの...
-
VBA 文字に半角が含まれて...
-
全角英数字の必要性が理解できない
-
word差し込み印刷 半角カタカ...
-
エクセルの検索が正しくできな...
-
メモ帳の段落の揃え方
-
エクセルにMicrosoft Barcode C...
-
COBOL・全角判定
-
エクセルでの”々”の扱い
-
プログラミングでは、半角括弧...
-
char型全角数字から、int型半角...
-
VB.net、テキストボックス入力...
-
全角/半角キーをSendkeys関数で...
-
明細書の英数字の全角・半角に...
-
ダブルコーテーションの置換
-
いまスマホからカードの申込み...
-
[Excel VBA] ODBCによる外部デ...
-
VBで、String型のデータが、...
おすすめ情報