電子書籍の厳選無料作品が豊富!

Excelのマクロで10個のセルの合計値が初めて200を超えたところに←を示すプログラムを作れ。また、10個のセルを合計しても200を越えない時は最後の行に合計値を表示せよ。 この問題でこの下の日本語の所を式に直すとどうなりますか?
教えてくださいm(_ _)m
全く分からなくて、、、

Dim i As Long
Dim total As Long

i=1
While 合計が200を超えていない かつ 11行目まで達していない
iの行をtotalに足す
iを1増やす
Wend
if 合計が200を超えている Then
i行に"←"
Else
i行に合計値を入力
End If

End Sub

質問者からの補足コメント

  • 回答ありがとうございますm(_ _)m
    A列の1行目から10行目に上から89 85 24 4 15 5 47 97 56 65と数字があり、4の横のB4のセルに←がでるようにしたいのですが、B5のセルに←がでてしまって上手くいきません。どうしたら良いでしょうか?
    何度もすみません。教えてくださいm(_ _)m

    No.1の回答に寄せられた補足コメントです。 補足日時:2023/10/31 10:52

A 回答 (3件)

No1です。



>4の横のB4のセルに←がでるようにしたいのですが、
>B5のセルに←がでてしまって上手くいきません。
No1にも書きましたが、処理の手順がそのようになっているのが原因です。
(コードそのものよりも、「処理手順の考え方」の問題です)

>どうしたら良いでしょうか?
たいした手間では無いので、1行ずつ実際にどう処理されていくのかを、処理手順に沿って机上でシミュレートしてみれば、理由はわかると思います。
理由がわかれば、どうすればよいかはご自身でお分かりになることと思います。
結果だけを貰っても、「考える力」は身に付きません。
    • good
    • 0

普通に


 For ~Next
でOK。

・・・

>iを1増やす
を使わずに、10個の合計をダラダラと書き連ねたマクロを書いてみましょう。
その中で
 For ~Next
で繰り返し処理できそうなところを纏めてしまえばOK。

「繰り返し処理」ってのはそうやって考える。

……まあ、ダラダラと書いたマクロでも処理できるので、それで問題は解決するんだけどね。
    • good
    • 1

こんばんは



セルの位置は「行番号」と「列番号」で決まるので、「i行に~」と書かれてもセル位置は決まりません。
以下のサンプルに、必要な列番号を追加してください。

ご質問文の上から順に
 While total <= 200 And i < 11
 total = total + Cells(i, ?)
 i = i + 1
 If total > 200 Then
 Cells(i, ?).Value = "←"
 Cells(i, ?).Value = total

※ ご提示のロジックのままだと、多分お望みの結果にはならないと思われます。
 (正確に、どうなさりたいのかは不明ですけれど・・)
※ セルの値が「数値であること」のチェックもなされていないので、変な値が存在する場合には、エラーが発生する可能性があります。
この回答への補足あり
    • good
    • 1

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