質問: 変数について 質問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)いけますか? 以上ですよろしくお願いします。
回答: こんにちは。 質問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 となります。