アプリ版:「スタンプのみでお礼する」機能のリリースについて

題名のようなことを考えて、実験的にやってみたのですが、これにまつわる不具合の情報をお持ちでしたら聞かせていただきたいのです。ネット上を漁った限りでは、内部処理がUnicode化されているので問題はないという話と、使えるけどやっちゃダメ的な精神論が出てくる程度で、それが原因でトラブった事例は見かけなかったため、おそらく問題はないだろうと思ってはいるのですが。なおExcel2010より古い環境のことは無視してOKです。

私個人は全角変数名は何となく気味が悪いと思っているくちですが、マクロの引き継ぎを行う必要に迫られ、そこで日本語変数名を使ってみようとしている次第です。特定部署でのみ使用している帳票(印刷するのでデータは50行前後)から、条件に沿ってデータを引っ張ってくるマクロを自作して利用しているのですが、マクロ作者たる私が異動となることとなり、帳票フォーマット変更などのメンテを、残った人員に引き継ぐ必要に迫られています。

部署内に残る人員ではまともにマクロを自作できる者はおらず、かろうじて作られたものを触る程度が可能なくらいです。と言う状況で、残った人員が少しでも修正が容易にできるように、変動要素のあるものは全て定数にしてマクロ先頭に集めたり、しこたまコメントを付けたりはしているのですが、ふと、

「変数名を日本語化したら、入門者には読みやすいのでは?」

と思って実験的にやってみました。こんな感じです。

Const 開始行=10
Dim 終了行 As Long
Dim 行カウンタ As Long

終了行=開始行+30

For 行カウンタ=開始行 To 終了行
(実処理)
Next

これを見て正直なところ、「やべ、俺自身にも解りやすいわwww」って思っちゃいました。これだったら概念説明が非常にやりやすい。動作上も問題ないし、特にやばい話も聞こえてこないなら、このまま行っちゃえと。

なので冒頭でも触れたように、精神論的やっちゃダメ以外の情報を求めます。なお同意意見でもけっこうです。

A 回答 (5件)

苦い経験がありますので、やらないほうがいいです。



Access97のVBAで、変数名に全角を使っていました。Accessのバージョンが上がっても10年以上問題なく使えていました。
Access2007までは、そのまま読み込めていたのですが、Access2010では、全角の変数名を使った部分が欠損して、プログラムが動作しなくなりました。

「銘柄コード」が「銘柄コ」にすべて化けてしまいました。

もともと、全角文字を想定していないシステムですので、このような不備は他の開発環境でもよく見られます。

マイコンの開発環境のMPLAB X IDEを趣味でつかうのですが、これも全角文字が化けることがあります。しかも、特殊な条件の時のみ化けるのでたちが悪いのです。
また、フォルダ名に全角文字が含まれている場合に、パス文字列が化けてちゃんと動作しないこともあります。

この回答への補足

そろそろ出尽くした感があるので、締め切ります。どの回答も有益でしたので、ベストアンサーは先着順としますが、お三方には等しくお礼申し上げます。

補足日時:2014/06/01 20:38
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

> Access97のVBAで、変数名に全角を使っていました。

それはそれで動いていたことの方が驚きです。その当時だと、文字コードは多分sjisだったでしょうから、変数に使えない文字パターンもあったんじゃないですか?2007までは大丈夫だったけど…という話では、ちょうどVisualStudioもVB6のインポート機能がなくなったのが2010からなので、微妙に関係してそうな気もしたりしなかったり…

> フォルダ名に全角文字が含まれている場合

ああ~、それは確かに危険な香りがしますね。ただ今回はVBAだし、外部ファイルに触りに行くことは一切ないので、大丈夫です。隣のシートを覗きに行くことはしていますが、そこで漢字使うなと言われたらそれは大変困ります…まあパス区切り文字とかは入らないので平気でしょう。平気であってくれ。

ともあれ参考になりました。ありがとうございました。

お礼日時:2014/05/18 21:29

変換が面倒というのと、日本語入力のまま変数以外の部分(行カウンタ=開始行)とか入力してしまってエラーになってしばらく悩む…のかと思ったら2013だけど勝手に=にしてれくれました。

””も""に…知らなかった。Range("h3:H1000")もエラーにならない…勉強不足でしたすみません。

とすれば、やはり変換が面倒くらいでしょうか。ローマ字でもわかり易いような気がします。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

> 変換が面倒というのと、日本語入力のまま変数以外の部分(行カウンタ=開始行)とか入力してしまって

それも確かにありがちですね。以下みたいな類似パターンも要注意だと今思いました。

カウンタ1 = 1 ←(変数名の数字は半角)
カウンタ1 =1  ←(変数名の数字が全角)

私は絶対に Option Explicit を付けてマクロを書くのでエラーで引っかけられますが、ぱっと見では気付かないかも知れないので。

> 2013だけど勝手に=にしてれくれました。””も""に…知らなかった。Range("h3:H1000")もエラーにならない…勉強不足でしたすみません。

いや、それは私も初めて知りました。有益な情報に感謝です。文字列の中に全角のダブルクォートを書いたらどうなるのかはちょっと気になりますけど。

お礼日時:2014/05/18 21:39

No.1です。


私は、全角で始まる変数名は決してつけませんでした。変数の型が分からなくなるためです。

Dim str名前 As String
Dim int人数 As Integer
Dim blnフラグ As Boolean
・・・などです。

先頭に半角文字を付けることによって、不具合を回避していたのだと思います。(たぶん当時そういう回避策を調べて知っていたような気がします。)
Access97で不具合が出なかったのはこのためです。

今はVBAはほとんど使わなくなりました。組み込みのC言語専門です。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

なるほど、型の識別も兼ねて半角で始めるですか…変数の型そのものはさんざん意識していますが、変数名から型の識別を行えるようにするという発想はしたことがありませんでした。不用意な暗黙変換を回避したい時に応用できそうですね。

お礼日時:2014/05/19 18:08

No2です



本論から外れちゃいますけどちょっとだけ

> 文字列の中に全角のダブルクォートを書いたらどうなるのかはちょっと気になりますけど。

文字列の中で Msgbox "あい”うえ" みたいにするととその時点でコンパイルエラーになります。「"”"」 と書くと「""""」に強引に変換されますし、Chr(&H8168)と書かないと駄目みたいで、これはこれでコード調べないといけないので面倒ですね。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。わざわざ試していただいたんですね。

全角であってもダブルクォートは半角に強制変換ですか、それはそれで面倒な仕様かも…Chr関数じゃないとだめなんだったら、全角なんて文字コードを考えると怖くて使えませんね。

お礼日時:2014/05/19 18:03

問題が出た経験はないですね。


Access 2010 にバージョンアップした時に全角のプロシージャ名が壊れた経験がありますが、2010 を出発点とするなら問題ないと思います。

入力を変換確定させるまでインテリセンスの候補に出ないとかの細かなデメリットはありますが、半角アルファベットで変数名の名前付けに迷ったり、変な名前を使われるよりはメリットがあると思います。

"全角文字を使う" というよりは "日本語を使う" というルールの方が分かりやすいかな?
本当の敵は "ローマ字読みの変数名を使いたがる人" だと思う・・・
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

> Access 2010 にバージョンアップした時に全角のプロシージャ名が壊れた経験がありますが、2010 を出発点とするなら問題ないと思います。

2007などから2010への移行云々って件ですね?やはり2010にはその辺何かありそうな…問題ないはずだとは言いつつ、移行で問題が生ずると。

> 本当の敵は "ローマ字読みの変数名を使いたがる人" だと思う・・・

以前どこかで、日本人なのにソースのコメントをロシア語で書く人がいる、と言う話を聞いた記憶があります。それに比べればまだ、saisyuugyou くらいは全然可愛げがありますね。

お礼日時:2014/05/20 21:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!