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

例えば、Strと言うのは、オブジェクトブラウザで確認すると
VBA.Conversion のメンバ
にありますが、この場合、

Sub test()
Dim Str As String
Str = "test"
MsgBox Str
End Sub

のようなコードは作らない方が良いのでしょうか?
エラーになったり何か不都合が発生しますか?

A 回答 (3件)

こんにちは。



VBAというのは、本当に予約語としてシステムで禁止している単語が少ないですね。Str は、禁止されていませんから、ご質問者さんのコードでも通りますし、際立ったトラブルもないはずです。

>エラーになったり何か不都合が発生しますか?
エラーとして扱えないケースとしては、

例えば、
× Str = Str(200)
つまり、変数と関数の併用

他のうまくない事象としては、
Dim str As String とすると、今度は、Str 関数の時に、str となって、小文字になってしまうので、変数なのか、関数なのか、見分けがつかなくなるということです。

同じように、メソッド名も使えないということです。プロパティ名も避けたほうがよいです。

ついでに、細かいことを言うなら、
Sub test()
 ↓
Sub Test1()  'Testは、メソッドの中にそういう語を持ったものがあります。
と、パスカル形式にしますね。(別に従わなくてもよいけれど、コードを見ただけで、ある程度の実力は観られてしまいます)

昔は、VB6で、コーディング・ルールとして会社ごとに決められることもあり、プレフィックスの "int", "str", "lng" などを変数の手前につけろ、と言っていた時代はありました。今は、VB6のコーディング・ルールを持ち出されることはないにしろ、VBAプログラマーにとっては、str は、VB.Net では標準的な変数として使われるとなると、なんと言ってよいものか、訳がわからなくなることがあります。

要するに、エラーになるか、ならないかは別としても、他人からみて(半年経てば、自分も他人)が読みやすいコードで書くということが大事だということです。たかが、VBAなのですが、それでも、プロシージャ名、変数、定数の書き方などは、一般的に知られたコーディング・ルールを適用したほうが良いということです。

ちなみに、Str 関数は、昔は、VB6でよく使われていた関数で、符号のスペースを数値の前にとってくれるので桁揃えをしやすく便利なのですが、最近では使われなくなりました。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2012/12/18 20:25

愚問だとは思うが、予約語を本来の意味以外に使ってはいけない。


この手のコードはネットのサンプルでもみかける。こういう鈍感なヤツにサンプルを書いてもらいたくない、ッタク、、、
例えば、そのコードに、次のコードを追加しても、最早、変数定義の方が強いので、Strは関数としては使えない。
Dim Str2 As String
Str2 = Str(100)
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2012/12/18 20:25

関数名と変数名を同じにするのは混乱するので普通は使いません。


予約語だとエラーになりますし。
それよりも何を目的に作成したものか分かる方がいいです。
stringもStr_TestCode とか相応しい名前があります。
適当に長いとダブル可能性も小さくなります。

翌日には何を作ったのか忘れることさえあります。
まして人が作成したものをメンテナンスというのは骨が折れます。
だから後々の楽を考えれば少々の面倒には目をつぶります。

何を意図としたものかを後々分かるように注釈を入れる、
グローバルで使うのなら接頭辞にgを付けるなど幾つかの約束事は用意した方がいいです。
会社ならコーディング規約とかありますし、プロジェクト前に決めるのが普通です。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2012/12/18 20:25

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