AIと戦って、あなたの人生のリスク診断 >>

質問1:-0.0685274635この数値を扱うのは(計算したりIFで判断するには)どの変数を使えば良いですか?
'変数 Variant Double=倍精度浮動 Currency=通貨型 Integer=整数型 Float=浮動小数点型 Long=長整数型
Dim CAL_DA As Integer
Range("A1")="-0.0685274635"
CAL_DA =Range("a1")
質問2:CAL_DAが-6.85274..になってしまいます。
ただし、必要とするのは-0.068の桁でよいのですが
質問3:CAL_DA =Mid(Range("a1"),1,6)いけますか?
以上ですよろしくお願いします。

A 回答 (1件)

こんにちは。



質問1

通常、Excelで、数値を扱う場合は、Double 型で、それ以上の精度を求める場合は、Currency 型に切り替えしますが、通常は、そんなに使いません。If で、タイプを判定するなら、VarType を使い、変数Variant 型にしておくこともありますが、なるべく最初から、決めてください。

旧VB系は、
整数型は、
Integer, Long
精度を上げるなら、
Currency
浮動小数点型は
Single, Double

Float 型は、C言語の変数型だと思います。

質問2

>必要とするのは-0.068の桁でよいのですが

Sub Test01()
Dim Cal_Da As Double  '←変数の型名は、なるべくキャメル型にしてください。
 Range("A1").Value = -0.0685274635 '←プロパティを入れ、数値で入れるのが基本です。
 Cal_Da = Range("A1").Value
 Cal_Da = Fix(Cal_Da * 10 ^ 3) / 10 ^ 3
End Sub

質問3

>CAL_DA =Mid(Range("a1"),1,6)いけますか?
VBAを扱う人はよく使うようですが、私はあまり好きな方法ではありません。

Sub Test01()の Fix は、小数点固定になりますが、Int は、丸めが発生しますので、
もし、Int を使うのなら、以下のように、

 Cal_Da = Sgn(Cal_Da) * Int(Abs(Cal_Da) * 10 ^ 3) / 10 ^ 3

となります。
    • good
    • 0
この回答へのお礼

早速、プログラムを訂正して使わせてもらいます。
10`3は小数点第3位のことですね
ありがとうございました。

お礼日時:2008/04/14 13:50

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


人気Q&Aランキング