投稿/コメントを表示します。

小川慶一 様
この度はご返信ありがとうございます。
早速ですが、エクセルマクロ・VBA基礎編フォローアップ ベーシックの問題に取り掛かりました。
しかし、何度解いてもよくわからない点があります。

★【動画6】 条件に一致するデータを別シートに転記する で例えますと、
Sub ichi()

Dim i As Long
Dim k As Long
k = 9
For i = 4 To 13
If Worksheets("元データ").Cells(i, 9) > 100 Then
Worksheets("要注意リスト").Cells(k, 3) = Worksheets("元データ").Cells(i, 1) 'ID
Worksheets("要注意リスト").Cells(k, 4) = Worksheets("元データ").Cells(i, 2) '名前
Worksheets("要注意リスト").Cells(k, 5) = Worksheets("元データ").Cells(i, 9) '合計
k = k + 1
End If
Next

End Sub
このような状態です。
解けてはいますし、回答を見ても正しいようなのですが、
k = k + 1の位置にいつも戸惑ってしまうのです。

Dim i As Long
Dim k As Long
k = 9
For i = 4 To 13
If Worksheets("元データ").Cells(i, 9) > 100 Then
Worksheets("要注意リスト").Cells(k, 3) = Worksheets("元データ").Cells(i, 1) 'ID
Worksheets("要注意リスト").Cells(k, 4) = Worksheets("元データ").Cells(i, 2) '名前
Worksheets("要注意リスト").Cells(k, 5) = Worksheets("元データ").Cells(i, 9) '合計
①k = k + 1
End If
     ②k = k + 1
Next

End Sub

①の状態が正しいというのはif endの中に入れておくというルールのような形で覚えてしまっている状態です。
最初に書いた時点では②の位置に書いてしまうのです。
そしてエラーが出て①の位置に戻しています。
ハナコステップで書いているのですが…何度書いても分かりません。

原因と致しましては、以下のように考えているからだと思うのですが、
そもそも文の読み方が正しくないのでしょうか…
ご教示頂けますと幸いです。

Dim i As Long 'iを宣言します
Dim k As Long 'kを宣言します
k = 9 'kは9です。
For i = 4 To 13 'iは4です(1周目時点)
If Worksheets("元データ").Cells(i, 9) > 100 Then 'もしも元データのi4(1周目時点)が100を超えていたら
Worksheets("要注意リスト").Cells(k, 3) = Worksheets("元データ").Cells(i, 1) 'IDをコピー
Worksheets("要注意リスト").Cells(k, 4) = Worksheets("元データ").Cells(i, 2) '名前コピー
Worksheets("要注意リスト").Cells(k, 5) = Worksheets("元データ").Cells(i, 9) '合計コピー
End If 'K9の値に入れるi4が調べ終わりました
     ②k = k + 1 'では次(i=5)に進む前にコピー先のセルも動かします
Next '(i=5)に進みます(forに戻ります)

End Sub
2021/04/15 22:47