
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」→識別子
です。
これが違うと言うことは何かが違うのでしょうか?
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
No.3
- 回答日時:
どちらもVBAの関数です。
いま改めて下記をやって見ると
Sub test01()
i = 1
MsgBox "*" & Str(i)
MsgBox "*" & CStr(i)
End Sub
結果が違いませんか。わざわざテストのために、*をつけておかないと違いが一見して見えない。
Strは+の場合1スペースはいるのは有名ですが、CStrは入らないようだ。
No.2
- 回答日時:
こんばんは。
>「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 …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) Vbaで数式をポーランド記法に変換するコードを作って実行しようとするとフリーズします。 1 2022/05/24 17:53
- Visual Basic(VBA) エラー処理 3 2022/04/11 14:58
- Visual Basic(VBA) VBAでfunctionを利用しようとしたときに「引数は省略できません」というエラーが出ます 1 2022/10/15 16:30
- Visual Basic(VBA) 【VBA】先月分の取得ができない理由が分かりません。 2 2022/04/24 11:16
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) VBA ユーザーフォームからSubプロージャ―に値を引き渡す方法 3 2023/04/09 01:54
- C言語・C++・C# str[j++]の意味 2 2022/08/30 16:20
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EBCDIC⇒SJIS変換の方法
-
セル内の文字列が日本語か英語...
-
ExcelVBA実行後に時々落ちる
-
ふりがなをアルファベット化す...
-
COBOLによる全角・半角混...
-
std::stringからLPCWSTR型への変換
-
sedで日本語の置換方法について
-
C++でEUC-JPをSJISに変換したい。
-
特殊記号
-
Excelマクロにて30分単位の計算...
-
「彡」って文字はなんという文...
-
PL/SQLでSJISの文字コードを取...
-
VS 2008(VB.NET)
-
%fと%gについて
-
コード変換について
-
フォームのコントロールのバッ...
-
1をA、2をB・・・に変換したい
-
Excel vba で1と10を正確に判断...
-
サーバから取得したdatetime型...
-
Symfowareでのデータ型変換につ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EBCDIC⇒SJIS変換の方法
-
セル内の文字列が日本語か英語...
-
std::stringからLPCWSTR型への変換
-
「彡」って文字はなんという文...
-
ふりがなをアルファベット化す...
-
ExcelVBA実行後に時々落ちる
-
VS 2008(VB.NET)
-
COBOLによる全角・半角混...
-
数値のパック10進数の変換に...
-
Symfowareでのデータ型変換につ...
-
sedで日本語の置換方法について
-
2バイト文字をJEFからSJISに変...
-
フォームのコントロールのバッ...
-
JIS → S-JIS コード変換するには
-
英数字を含む文字列(0-9,A-Z)...
-
Excel vba で1と10を正確に判断...
-
Excelマクロにて30分単位の計算...
-
PL/SQLでSJISの文字コードを取...
-
S-JIS → JIS コード変換するには
-
%fと%gについて
おすすめ情報