• 締切済み

Excel VBAの割り算の記述に関して

各シートにA列とB列の計算した結果をC列に出力するようなExcel VBAの記述をしたいのですが、 シートAには、計算する個数を入力します。 開発タブよりフォーム コントロールのボタンを選択します。 ボタンを押すと シートBには、A列とB列のそれぞれの値の和の結果をC列に シートCには、A列とB列のそれぞれの値の差の結果をC列に シートDには、A列とB列のそれぞれの値の積の結果をC列に シートEには、A列とB列のそれぞれの値の商の結果をC列に シートEの割り算の計算ですが、小数点を出力したい。 割り算がうまく出力してくれません。"/"を使えば良いと思うのですが、異なる結果が出て困っています。以下の記述のどこが間違っているのでしょうか。 Sub 問題作成() Dim count As Long Dim input_training As Long Dim left_num As Long Dim right_num As Long Dim answer_num As Long input_training = Range("A1").Value ' 加算 Worksheets("SheetB").Range(("A2"), ("C100000")) = "" ' 減算 Worksheets("SheetC").Range(("A2"), ("C100000")) = "" ' 積 Worksheets("SheetD").Range(("A2"), ("C100000")) = "" ' 商 Worksheets("SheetE").Range(("A2"), ("C100000")) = "" Randomize For count = 1 To input_training left_num = Int(1000 * Rnd) right_num = Int(1000 * Rnd) answer_num = left_num + right_num Worksheets("SheetB").Cells(1 + count, 1) = left_num Worksheets("SheetB").Cells(1 + count, 2) = right_num Worksheets("SheetB").Cells(1 + count, 3) = answer_num Next ' 減算 For count = 1 To input_training left_num = Int(1000 * Rnd) right_num = Int(1000 * Rnd) answer_num = left_num - right_num Worksheets("SheetC").Cells(1 + count, 1) = left_num Worksheets("SheetC").Cells(1 + count, 2) = right_num Worksheets("SheetC").Cells(1 + count, 3) = answer_num Next ' 積 For count = 1 To input_training left_num = Int(1000 * Rnd) right_num = Int(1000 * Rnd) answer_num = left_num * right_num Worksheets("SheetD").Cells(1 + count, 1) = left_num Worksheets("SheetD").Cells(1 + count, 2) = right_num Worksheets("SheetD").Cells(1 + count, 3) = answer_num Next ' 商 For count = 1 To input_training left_num = Int(1000 * Rnd) right_num = Int(1000 * Rnd) answer_num = left_num / right_num Worksheets("SheetE").Cells(1 + count, 1) = left_num Worksheets("SheetE").Cells(1 + count, 2) = right_num Worksheets("SheetE").Cells(1 + count, 3) = answer_num Next End Sub

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

なにを聞きたいのか? ーー ここの質問には、あまり多数のVBAとしての論点を含めないこと。 引っかかっている点が、数値の演算のこと、データは小数点以下数らしいこと、などは判るが、 質問コード例では、乱数が出たり、演算するデータの場所がいろいろあったり、複雑でよくわからない。 質問は、自分の今回の課題に100%突き合わせないこと。 質問は、エッセンスにして質問できるようになること。 コードのコピペに頼らず、疑問点をパターン化したときはどうなるか、文章表現を磨け。プログラムの勉強は、このパターンのレパートリーを増やすこと、になると思う。 ーー ・エクセルのVBAであること、として ・データ型は https://kokodane.com/2013_macro_15.htm 倍精度浮動小数点数型 など読んで考えたら。 ・エクセルには、数の小数点以下の数を指定できる関数がある。Roundなど。 ・またエクセルは、表示形式という仕組みで、表示の小数点以下を指定できる。 それらについては、質問者はどう考えているのか。 >割り算がうまく出力してくれません 「うまく」とは、他人には例でも挙げないと、判らないだろう。

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.1

Dim answer_num As Double にしてみてください。 エクセルの神髄 第12回.変数宣言のDimとデータ型 https://excel-ubara.com/excelvba1/EXCELVBA312.html

tsugurin0823
質問者

お礼

早速、ご返答ありがとうございます。 さらに、有力なURLを教えていただきましてありがとうございます。

関連するQ&A