• ベストアンサー

VBAでの四捨五入

VBAで下記式「A」を四捨五入(0.97517→0.98)したいのですが、どのようにしたらよいのでしょうか。 式: A = (TextBox1.Text * 10)/TextBox2.Text

質問者が選んだベストアンサー

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.4

四捨五入ですね? もうこたえは出ていますが、VBAのRoundは使用上注意が必要です。 Excelのワークシート関数での ROUND は、"算術型" の丸め処理を行います。"算術型" 丸め処理では、丸め対象位置の 5 は常に切り上げられます。 つまり、まさしく四捨五入です。 これに対して VBA での Round は "銀行型" の丸め処理を行います。"銀行型" の丸め処理の場合は 5は、結果が偶数になるように丸められ、切り上げられることも、切り捨てられることもあります。 例:小数第3位までで丸める場合の小数第4位の5の動き 12.1225→12.122 12.1235→12.124 12.1245→12.124 12.1255→12.126 これを防ぐには#3さんがお書きのように、 Application.WorksheetFunction.Roundとして、ワークシート関数でのRoundを指定する必要があります。 (ただし、VBAのRoundでも 12.22500001のように、わずかでも5より大きければ切り上げられます。)

gazo
質問者

お礼

とても詳しいご回答ありがとうございます。 勉強になりました。

その他の回答 (3)

  • Nayuta_X
  • ベストアンサー率46% (240/511)
回答No.3

WorksheetFunction.Round(数値,桁数)を使用します。 例; 答え= WorksheetFunction.Round(A, 2) または、 答え= Fix((0.97517 + 0.005) * 100) / 100 と言う方法もあります。 または、 答え= int((0.97517 + 0.005) * 100) / 100 と言う方法もあります。 尚、桁数を指定しない方法は、ないようです。

gazo
質問者

お礼

ご回答ありがとうございます。 参考にさせていただきます。

  • mimikuro
  • ベストアンサー率35% (21/59)
回答No.2

回答 A = Round(TextBox1.Text, 2) のようにコーディングしてください。

gazo
質問者

お礼

ご回答ありがとうございます。 参考にさせていただきます。

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.1

★Round という関数があります。 ・Round(0.97517,2) → 0.98 になります。 ・Round(数値(セル),桁数)です。 ・以上。おわり。

gazo
質問者

お礼

ご回答ありがとうございます。 参考にさせていただきます。