• 締切済み

繰り返しの足し算

こんにちは、いつもお世話になっています。 今回、セルに符号がランダムで、絶対値が同じ数を足していきたいのですが、思うようにいきません。 (5→0→0→-5→-10→-15・・・) 何が悪いのでしょうか・・・? Sub ランダムの足し算() Cells.Clear a = 0 For dt = 1 To 20 Cells(dt, 1) = a + di '足していきたいのに、足せない? di = Int(rnd - 0.5) * 5 'これが足す数です。 If di = 0 Then di = di + 5 End If Next End Sub 回答よろしくお願いします。(> <)"

みんなの回答

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

やりたいことが良くわかりませんが、 選ばれた数をA列に その都度足した数をB列に表示するなら こんな感じでいいんじゃないかと思います。 Sub ランダムの足し算() Cells.Clear a = 0 For dt = 1 To 20 di = Int(Rnd - 0.5) * 5 'これが足す数です。 If di = 0 Then di = di + 5 End If Cells(dt, 1) = di a = a + di Cells(dt, 2) = a Next End Sub

nanakokko
質問者

お礼

そうそう! こんなかんじです!! ありがとうございます!!( ^ー^)σ"

全文を見る
すると、全ての回答が全文表示されます。
  • ipsum11
  • ベストアンサー率21% (55/251)
回答No.3

>今回、セルに符号がランダムで、絶対値が同じ数を足していきたいのですが、思うようにいきません。(5→0→0→-5→-10→-15・・・) 足した結果を入れる変数が見当たりません。 Cells(dt, 1) = a + diは毎回変わりますので、20行分(A1からA20)のセルに数字が出力されます。その結果を足すことですか? やりたいことがわかりません。 どううまくいかないのか、どうあるべきなのか、具体例を提示してみてください。

nanakokko
質問者

お礼

すみません、ご指摘の通りです。 文章力なくて、自分。 (>_<)・・・ その通りですよね、次からはもっと判りやすい文章で質問します。 ご協力、本当にありがとうございます(^o^)

全文を見る
すると、全ての回答が全文表示されます。
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.2

aの値は常に0なので乱数の結果diがセルに入るだけです。 aの変数は何のために用意したのですか? a = a + di Cells(dt, 1) = a

nanakokko
質問者

お礼

そうですよね、aは邪魔ですね、 多分、使おうと思って消去し忘れたのかと・・・ ごめんなさい!! もっと勉強して、hanahanaさんのように、プログラムが読めるようにしたいです!(>_<)!!

全文を見る
すると、全ての回答が全文表示されます。
  • lasichi
  • ベストアンサー率31% (122/389)
回答No.1

ちょっとやりたいことがいまいち理解できません。。 元の値(0?)に 足す値(この場合5)の符号をランダムにして足していくだけでしょうか? つまり 0+5→5 +5→10 +5→15 -5→10 -5→5 こんな感じでしょうか?

nanakokko
質問者

お礼

はい!! その通りでございます!!( ^ー^) おかげで解決できました! ありがとうございます(・o・)"

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBAにおける、たし算の自動作問プログラムについて

    二列目に、二桁の整数の足し算を出題することができるたし算の作問プログラムを以下のように作ったのですが、続いて三列目に、足し算の解答をして、それの正誤を確かめるプログラムを作りたいのですがどのようにすればよいでしょうか? ↓作問のプログラム Sub test() Columns("B:F").Clear n = InputBox("問題数は?") ReDim ans(n) For i = 1 To n Randomize x = Int(Rnd * 100) Randomize y = Int(Rnd * 100) ans(i) = x + y Cells(i, 2) = "(" & i & ") " & x & " + " & y & " = " Next i End Sub 以下のような感じで採点のプログラムを作りたいのですが、上のプログラムの変数ans(i)を参照する場合、下のプログラムのans(i)はどのように定義すればよいのでしょうか? Sub saiten() For i = 1 To n If Cells(i, 3) = ans(i) Then Cells(i, 4) = "○" Else: Cells(i, 4) = "×" Next i End Sub

  • このマクロの繰り返し?

    もう、なにがなんやらで・・・ このマクロの繰り返しを入れ子で出来ないでしょうか? 加算しながら増やしていくので、わけわからなくなりそうです。 Option Explicit Sub hiat() Cells.Clear Dim s As Long, a As Long, b As Long, c As Long, d As Long, e As Long For a = 1 To 31 s = Rnd * 4 Cells(a, 1) = s If s >= 4 Then Exit For '4がでたら終わり。 Next For b = 2 To 31 s = Rnd * 4 Cells(a, b) = s If s >= 4 Then Exit For '4がでたら終わり。 Next Cells(a + 1, b).Select 'セルの移動 Cells(a + 1, b).Activate For c = 1 To 31 - a s = Rnd * 4 ActiveCell(c) = s If s >= 4 Then Exit For '4がでたら終わり。 Next Cells(a + c, b + 1).Select 'セルの移動 Cells(a + c, b + 1).Activate For d = 1 To 31 - a - c s = Rnd * 4 ActiveCell(d) = s If s >= 4 Then Exit For '4がでたら終わり。 Next Cells(a + c + d - 1, b + 2).Select 'セルの移動 Cells(a + c + d - 1, b + 2).Activate For e = 1 To 31 - a - b - c - d s = Rnd * 4 ActiveCell(e) = s If s >= 4 Then Exit For '4がでたら終わり。 Next Cells(a + c + e - 1, b - 1 + d + 1).Select 'セルの移動 Cells(a + c + e - 1, b - 1 + d + 1).Activate End Sub

  • VBAでフォームにおけるコマンドが実行されません。

    なんどもすいません。二列目に、二桁の整数の足し算を出題することができるたし算の作問プログラムと、続いて三列目に、足し算の解答をして、それの正誤を確かめるプログラムを、それぞれフォームで”問題”、”採点”とした時、一回フォームのウィンドウを閉じてしまうと”採点”のコマンドを押しても、うまく実行されません。 im Ans() As Long Dim n As Variant Private Sub monndai_Click() Dim x As Long, y As Long Columns("B:F").Clear n = InputBox("問題数は?") If Not IsNumeric(n) Then Exit Sub If n <= 0 Then Exit Sub ReDim Ans(n) As Long For i = 1 To n Randomize x = Int(Rnd * 100) Randomize y = Int(Rnd * 100) Ans(i) = x + y Cells(i, 2) = "(" & i & ") " & x & " + " & y & " = " Next i End Sub Private Sub saiten_Click() t = 0 Dim i As Long For i = 1 To n If Cells(i, 3) = Ans(i) Then Cells(i, 4) = "○": t = t + 1 Else Cells(i, 4) = "×": End If Next i tokutenn = "貴方の正答率は" & Int(t / n) & "%です" End Sub (注)tokutennはフォームのテキストボックスのオブジェクト名です。

  • Visual Basicで単語帳をつくりたい

    こんにちは!Visual Basicを使って単語帳をつくらなければならいのですが、作り方がさっぱりです。 現在このような感じになっていて実行ができないのですが どうすればいいのでしょうか? 単語は6つあります。 Sub French2() For I = 1 To 6 X = Int(Rnd * 4) + 1 Z = Cells(X, 1) + "は?" Y = InputBox(Z) If Y = Cells(X, 2) Then Z = "当たり!" MsgBox (Z) Next For I = 5 To 6 X = Int(Rnd * 5) + 6 Z = Cells(X, 1) + "は?" Y = InputBox(Z) If Y = Cells(X, 2) Then Z = "その調子!" Else Z = "残念!" MsgBox (Z) End If End Sub さらに工夫を施さなければならないのですが本当に分らないので困っています。回答お願いします!

  • 乱数 IFステートメント

    Debug.Print Int((11 - 8 + 1) * Rnd + 8) 「これって8~11までの乱数を発生させますよ」 という意味であってますか? そして、 Sub a() Dim 文字数 As Long 文字数 = Int((11 - 8 + 1) * Rnd + 8) If 8 >= 文字数 <= 10 Then MsgBox 文字数 & "は、8~10の間です" End If End Sub を実行すると、11でも MsgBox 文字数 & "は、8~10の間です" が表示されてしまいます。 「8~10の間なら」メッセージボックスを表示するには、 If 8 >= 文字数 <= 10 Then の部分をどうすればいいですか?

  • 乱数で・・・

       ラベル10枚に1~10までを乱数を入れたいのです ただしダブらない どうすればいいのでしょうか?? 自分で考えたのですがバグがあります ※コマンドをクリック ※クローンは用意済み Private Sub Command1_Click() Dim a(0 To 9) For i = 0 To 9 a(i) = Int(Rnd * 10)+1  For b = 0 To 9   If a(i) = a(b) Then     If i <> b Then     a(i) = Int(Rnd * 10) + 1     End If   End If   Next b Next i For c = 0 To 9 Label1(c).Caption = a(c) Next c End Sub バグの原因はなんとなくわかるのですがどうすればいいのか分かりません 素人ですいません。

  • 【Excel】セルに入れた数字だけ同じことを繰り返す【VBA】

    A1のセルに数値を入れ、マクロを実行させたときに A1に入れた数値だけ同じ行動を行うというプログラムを作りたいのですが、 うまくいきません。 VBAで実行させたいです。 Sub Macro1() c = 1 For a = 1 To 54 Cells(2, 2) = a b = Int(54 * Rnd + 1) If Cells(10, b) = 0 Then Cells(10, b) = c: c = c + 1: Cells(1, a) = b Else a = a - 1 Next a End Sub 未だたたき台なプログラムですが、これを元に作成できないでしょうか?

  • VBの初歩で躓き

    VBに初チャレンジしましたが、下記を実行しようとすると NEXTに対応するForがないというエラーが出ます。理由が分かりません。 Sub セル() For i = 1 To 10 Cells(i, 1) = "" Cells(i, 2) = "" If Int(i / 2 * 2) = i Then Cells(i, 1) = "abc" Else If Int(i / 2 * 2) <> i Then Cells(i, 2) = "xyz" End If Next End Sub

  • Excel2007VBAのランダム置換ソース

    Excel(エクセル)2007VBAを使って、 「複数ある、同一の置換したい文字・数」 を 「複数の文字・数」 でランダムに置換したいのですが、 VBAソースが分かりません。 たとえば、 【A列】に A1:私は(置換する所)と(置換する所)が得意です。 A2:彼は(置換する所)と(置換する所)と(置換する所)が特技です。 A3:彼女は(置換する所)と(置換する所)と(置換する所)と(置換する所)の選手です。 A4:彼らは(置換する所)と(置換する所)と(置換する所)と(置換する所)と(置換する所)が好きです。 A5:あの人は(置換する所)と(置換する所)と(置換する所)と(置換する所)と(置換する所)と(置換する所)をしたことがありません。 と入力されている時に、 【B列】に B1:拳闘 B2:柔道 B3:野球 B4:籠球 B5:打球 B6:羽球 B7:剣道 B8:卓球 B9:水泳 B10:避球 と入力したとします。 そして、コマンドボタンを押すと 【A列】にあるすべての 「(置換する所)」 を、 【B列】にある「拳闘」「柔道」「野球」「籠球」「打球」「羽球」「剣道」「卓球」「水泳」「避球」のどれかで必ず置換されるようにします(【ランダムで置換】されるようにしたいです)。 ※置換の条件として、一つのセル内で同じ文字が重複しないようにしたいです。 (私は拳闘と拳闘が得意です。)     ↑   ↑ 同じ文字が2つ以上ある置換は失敗です。 --------------------------------- 置換の成功例 (重複なしの置換) ◆置換前の【A列】A5 あの人は(置換する所)と(置換する所)と(置換する所)と(置換する所)と(置換する所)と(置換する所)をしたことがありません。       ↓↓↓ ◆置換後の【A列】A5 あの人は打球と柔道と水泳と剣道と避球と拳闘をしたことがありません。 --------------------------------- これが未完成のVBAソースです。 ↓↓↓ Sub test_Click() For Each CellA In Range("A1:A5").Cells Rnd1 = Int(Rnd() * 10) + 1 Rnd2 = Int(Rnd() * 9) + 1 Rnd3 = Int(Rnd() * 8) + 1 Rnd4 = Int(Rnd() * 7) + 1 Rnd5 = Int(Rnd() * 6) + 1 Rnd6 = Int(Rnd() * 5) + 1 If Rnd2 = Rnd1 Then Rnd2 = Rnd2 + 1 If Rnd3 = Rnd2 Then Rnd3 = Rnd3 + 1 If Rnd4 = Rnd3 Then Rnd4 = Rnd4 + 1 If Rnd5 = Rnd4 Then Rnd5 = Rnd5 + 1 If Rnd6 = Rnd5 Then Rnd6 = Rnd6 + 1 CellA.Value = Replace(CellA, "(置換する所)", Cells(Rnd1, 2), , 1) CellA.Value = Replace(CellA, "(置換する所)", Cells(Rnd2, 2), , 1) CellA.Value = Replace(CellA, "(置換する所)", Cells(Rnd3, 2), , 1) CellA.Value = Replace(CellA, "(置換する所)", Cells(Rnd4, 2), , 1) CellA.Value = Replace(CellA, "(置換する所)", Cells(Rnd5, 2), , 1) CellA.Value = Replace(CellA, "(置換する所)", Cells(Rnd6, 2), , 1) Next End Sub 【補足】 ※コマンドボタンを押すとランダム置換される仕様です。 ※1回限定の置換ではなく、コマンドボタンを押すたびに(何度でも)ランダム置換できるようにしたいです。 ※上記の【A列】【B列】の文字はあくまで例です。実際は、【A列】【B列】ともに自由に文字を変更できる応用の利く仕様にしたいです(Excelの【A列】【B列】に、文字を直接入力して変更するという意味です)。 ※上記の【A列】が5行、【B列】が10行というのもあくまで例です。実際は、【A列】【B列】ともに何行にでも対応できる仕様にしたいです(具体的には【A列】【B列】ともに、10000行くらいまで対応できるのが理想です)。 長くなりましたが、ここまでの条件を満たすVBAソースが知りたいです。 どうかよろしくおねがいいたします。

  • VB6.0で製作中の「もぐらたたきゲーム」について(補足版)

    昨日しました質問が要領を得ていなくて、回答してくださった皆様すいません。 ランダムで4種類の画像が同時に16個のImageにランダムに表示するようにしています。が、ランダムに表示するなかでも画像がかぶってしまい3種類、もしくは2種類しか表示されなくなってしまっています。どうしたら4種類とも表示できるでしょうか? <コード> Private Sub Form_Load() Randomize End Sub Private Sub Timer1_Timer() n = n + 1 If n <= 20 Then i = Int(Rnd * 16) f = Int(Rnd * 16) s = Int(Rnd * 16) b = Int(Rnd * 16) Image1(i0) = Image4 Image1(f0) = Image4 Image1(s0) = Image4 Image1(b0) = Image4 Image1(i) = Image2 Image1(f) = Image2 Image1(s) = Image5 Image1(b) = Image7 Label1.Caption = " バイキンマンの数 = " & (2 * n) Label3.Caption = " ドキンちゃんの数 = " & n i0 = i s0 = s b0 = b f0 = f Else Timer1.Enabled = False Command1.Caption = " 再度トライ " End If End Sub もっとコードが必要でしたら公開します。

このQ&Aのポイント
  • 元々windows7だったんですが、息子にwindows10を入れてもらいました。それでCDからCDROMにダウンロードの仕方が分からないのですが教えて欲しいです。
  • windows7からwindows10にアップデートした際、CDからCDROMにダウンロードする方法が分からなくなりました。教えていただけると助かります。
  • NEC 121wareのWindows版をCDからCDROMにダウンロードしたいのですが、方法がわかりません。お知恵をお貸しください。
回答を見る