プロが教えるわが家の防犯対策術!

『 '文字列に直す
answer = Str(answer)
'値をtwxtBoxに返す。
txtall.Text = answer』

と、

『'値をtwxtBoxに返す。
txtall.Text = Str(answer)』

とでは微妙に値の返し方がずれます。
前述より後述のほうが、テキストBOXでの値が少し右にずれます。

どうしてでしょうか?

A 回答 (1件)

こんにちは。



以下、VBAのヘルプより引用です。
|Str 関数
|バリアント型 (内部処理形式 String の Variant) の値を返します。数式の値を文字列で表した値 (数字) で返す文字列処理関数です。
|構文
|Str(number)
|引数 number には有効な数式を長整数型 (Long) で指定します。この引数は必ず指定します。
|解説
|数値を文字列に変換すると、戻り値の先頭に符号を表示するためのスペースが常に確保されます。数値が正の場合は、Str 関数の戻り値の先頭にスペースが挿入されます。このスペースはプラス記号を意味します。
|日付、時刻、通貨、ユーザー定義の書式などで数値を書式設定するときに、Format 関数を使います。Str 関数と異なり、Format 関数を使用して変換した場合は、引数 number の先頭にスペースは挿入されません。
|メモ Str 関数は、ピリオド (.) だけを有効な小数点記号として認識します。異なる小数点記号を使用する場合は、CStr 関数を使って数値を文字列に変換します。
引用ここまで。

> 戻り値の先頭に符号を表示するためのスペース
が入ります。
Str(123)
は、■ 123■
Str(-123)
は、■-123■
という風に桁が揃うという特徴を活かしたい時や、
スペース区切りで正の数値を列挙させたい時などは、
Str()関数の特長を活かして使うことができます。
基本的に、引数も戻り値もVariant型です。

似て非なるものに、データ型変換関数としての
CStr関数があります。
こちらは、戻り値がString型で、先頭にスペースは入りません。
数値(または数字文字列)を引数に数字文字列を返す点は共通です。
Empty値=空の値をVariant型で引数にした場合の戻り値が
Str関数とCStr関数とでは異なります。
例えば、セルA1が空白セルである時、
  MsgBox Str(Cells(1, "A"))
は、0
  MsgBox CStr(Cells(1, "A"))
は、長さ0の文字列
を返します。

Str関数、CStr関数、それぞれの特徴、違いを理解した上で、
目的や用途に合わせて使い分けてください。
    • good
    • 1
この回答へのお礼

ありがとうございます。
前に(+)記号(非表示)とマイナス記号(ー)のスペースが取られているかの差だったんですね。

お礼日時:2015/04/02 21:38

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