format関数について

解決


ki  2007-03-08 07:56:12  No: 135684

If IsNull(RST(6)) Then
  wLn = Space(RST(5) -1) & Int((30 * Rnd) +10)
Else
  wLn = Space(RST(5) -1) & Int((30 * Rnd) +10) & "." & Right("0000000" & Trim(Str(Int(Rnd * 10000000))), RST(6))
End if

※RST(5)、RST(6)、wLnは変数です

見た目が汚いからFormat関数を使って上記を直せと言われました。
自分で調べてみたものの、さっぱりわからず。。。
知恵を貸してください。お願いします


魔界の仮面弁士  2007-03-08 08:26:18  No: 135685

知恵を貸そうにも、何を求められているのかが曖昧すぎます。
このままでは、回答者側が、仕様を「推測」しなければなりません。

まずは、そのコードが何を行っているのか(何を行わせたいのか)を
明確にしてください。

RST(6) などの変数にしても、そこに何が入ってくるのかが説明されていません。
IsNull を使っている以上、Variant 型であろうとは想像できますが、
Null 以外の時に来る値が、どのような値であるのか不明瞭です。
(整数かも知れないし負数かも知れないし、数字の文字列かも知れないし)

> wLn = Space(RST(5) -1) & Int((30 * Rnd) +10)
型を意識しましょう。
「Space(RST(5) -1)」の実行結果は文字列型、
「Int((30 * Rnd) +10)」の実行結果は単精度浮動小数点型です。

& 演算子は、文字列同士の連結に使うべきなので、連結前に、
Int の実行結果を、Format 関数あるいはCStr関数などで
文字列型に統一すべきです。

> Trim(Str(Int(Rnd * 10000000)))
CStr(Int(Rnd * 10000000)) で良いかも。


ki  2007-03-14 07:04:29  No: 135686

魔界の仮面弁士さん。ありがとうございました
参考にさせていただきました。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加