Sub renshu()
Dim hida
Dim migi
Dim mistake
Dim tenkisaki
tenkisaki = 30
mistake = False ← ここに入れてしまった
For migi = 11 To 21
← 本来はここ
For hida = 4 To 29
If Range("a" & hida) = Range("e" & migi) Then
Range("c" & hida) = Range("f" & migi)
mistake = True
End If
Next
If mistake = False Then
Range("a" & tenkisaki) = Range("e" & migi)
Range("c" & tenkisaki) = Range("f" & migi)
tenkisaki = tenkisaki + 1
End If
Next
end sub
受講生さんの投稿
(投稿ID: 3505)
おかげさまで何とかここまで来られました。
今回は、一度、流して講義を聞いてみて、その後自分で書いてみました。
すると、mistake = False の位置が間違えていたため、「46」と「33」
が枠外に書かれませんでした。
こういう間違いをするということは、どの辺の理解が足りないのでしょうか?
よろしくお願いいたします。
受講生さんのコメント
(コメントID: 4971)
もう一度「F8」でひとつずつ進めてみて、私が間違えてmistake = Falseを入れた位置だと、一度trueが入ってしまうと、ずっとtrueのままになってしまい、下のif文がきちんと処理されないということが分かりました。
hidaが29まで行ったら、mistake をFalseに戻しておかないといけないので、私が書いた位置ではダメということですね。
小川慶一さんのコメント
(コメントID: 4978)
ですね。
自分で試すのがいちばん勉強になります (^^
以下も改めて参照ください。
今復習すると、気づくことも多いでしょう。
出現回数を数える。CountIf関数がやっていることをマクロで書くと?
https://forum.pc5bai.com/lesson/page/150
> 9049 : 受講生さんのコメント (2017-10-12 23:59:24)
>
> もう一度「F8」でひとつずつ進めてみて、私が間違えてmistake = Falseを入れた位置だと、一度trueが入ってしまうと、ずっとtrueのままになってしまい、下のif文がきちんと処理されないということが分かりました。
> hidaが29まで行ったら、mistake をFalseに戻しておかないといけないので、私が書いた位置ではダメということですね。