- ベストアンサー
【vba】「CStr」と「Str」は同じ意味ですか?
Sub 数値を文字型に変更() Dim i As Long Dim moji As String i = 1 moji = CStr(i) moji = Str(i) End Sub 上記のコードで得られる結果は同じです。 "1"になります。 「CStr」でも「Str」でも数値を文字列に変換しています。 ということは「CStr」でも「Str」は同じなのですか? しかしコードの表示色が 「CStr」→キーワード 「Str」→識別子 です。 これが違うと言うことは何かが違うのでしょうか? よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
文字列操作について詳しく知ろう!1 http://home.att.ne.jp/zeta/gen/excel/c04p39.htm 上記のページに説明があります
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
どちらもVBAの関数です。 いま改めて下記をやって見ると Sub test01() i = 1 MsgBox "*" & Str(i) MsgBox "*" & CStr(i) End Sub 結果が違いませんか。わざわざテストのために、*をつけておかないと違いが一見して見えない。 Strは+の場合1スペースはいるのは有名ですが、CStrは入らないようだ。
お礼
ありがとうございます。ほんとうですね!なんなんでしょうかね。これは。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 >「CStr」→キーワード >「Str」→識別子 戻り値がStr 側が、負の符号の入れるためのスペースが入るぐらいは常識ですが、なぜ、キーワードと識別子の違いになっているのか分かりません。VBAを何年もやってますが、考えたこともありません。 moji1 = CStr(i) '←データ型の変換 moji2 = Str(i) '←数値を文字列に変換 という違いから、CStr は、データ型自体を変換しているので、一般関数Str とは違う扱いにしているのかもしれません。 Sub MacroTest1() Dim i As Variant Dim moji1 As String Dim moji2 As String i = "a" On Error Resume Next moji1 = CStr(i) 'moji1に入る moji2 = Str(i) 'moji2 には入らない(本来はエラーが発生) End Sub ただ、Str関数は、システムのロケールの小数点の記号のピリオド([.])のみをデシマル・セパレータとして判別できません。私たちの表記は米国系の文化圏なので問題ないのですが、ヨーロッパの文化圏では、小数点の記号は、カンマ([,])のこともありますから、この関数はグローバルに共有するということではないようです。 参考:(英語) http://msdn.microsoft.com/en-us/library/4y6a1sx7(VS.80).aspx
お礼
ありがとうございます。
お礼
ありがとうございます。