ミスチルの大名曲の数々が配信決定!! 31日間無料!!【PR】

独学で昨日からマクロに取り組んでいますが、一人では理解できない部分があります。
お力添えいただけると幸いです。

比を計算し、%に直したいと思い以下のコードを書きました。

Sub rensyu()
Dim a As Long
Dim b As long

For a = 2 To 21
b = Cells(a, 3) / Cells(a, 2)
Cells(a, 4) = b
Next
End Sub

本来であれば、bに代入されるのはCells(a, 3) / Cells(a, 2)で、そのなかには少数が入るはずなのですが、実際にはすべて1が代入され、表示されます。
Cells(a, 4) = Cells(a, 3) / Cells(a, 2)
に直すとうまくいきます。
エミディエイトではbに代入した時点ですべて1になっていました。

答えではなく、なぜ駄目なのかを知りたいのです。
ぜひともよろしくお願いいたします。

A 回答 (2件)

「Dim b As long」で「b」には長整数型になりますので小数部は丸められてしまいます。


精度浮動小数点数型 (Single)、倍精度浮動小数点数型 (Double)、バリアント型 (Variant)で定義してください。
    • good
    • 0

>答えではなく、なぜ駄目なのかを知りたいのです。


ということですので、
「long型を誤解しています。」
ぐらいの回答がいいのかな?
もう少し詳しい回答が必要であれば補足してください。
    • good
    • 0
この回答へのお礼

数値を入力する際、Long、またはIntegerしか使用していませんでした。
型を変えても数字が変わらない→別の要因?と考えていました。
その時々で細かく型を分けて定義しなくてはいけないのですね。
勉強になりました。
ありがとうございます。

お礼日時:2018/01/12 12:03

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング