質問: i + 1 Loop End Sub ```
回答: ループ処理Do~Whileの記述方法に問題はなさそうです。 例えば下記のコードを実行すると、H列以降の8行目にデータが入力されている列だけループ処理を行い、都度メッセージボックスが表示されます。 ``` Sub Read() Dim i As Long i = 8 Do While Cells(8, i) <> "" Msgbox i i = i + 1 Loop End Sub ``` 正しく動作しない原因としては、例えば ●判定対象のシートがアクティブになっていない ⇒判定条件が`Cells(8, i)`という記述になっており、対象シートが明示されていません。 この場合、暗黙的にActiveSheetが対象となります。 ループ処理の内外でActiveSheetの切替などを行っていると、期待した動作とならない可能性があります。 ●ループ内の処理で次回参照セルを意図しないものに変更している 提示いただいたコードではループ処理の中身は省略されていますので憶測になってしまいますが、iの値が途中で変更されている、I8セルの値が一時的に空欄になっている、など何らかの要因で2週目の判定を通過する際にループ終了条件を満たしている可能性があります。 以下のようにiをインクリメントした後で次回参照セルの内容を確認してみると原因が掴みやすいかもしれません。 ``` Sub Read() Dim i As Long i = 8 Do While Cells(8, i) <> "" ・ ・ ・ i = i + 1 Msgbox CStr(i) & ":" & Cells(8, i) Loop End Sub ``` ●ループ内の処理でExit Doしている さすがにこれをしていれば気が付くと思いますが、一応ループを抜ける条件の一つですので記載しました(^-^; ・・・といったあたりでしょうか。 かなり憶測による部分が多くなってしまいましたが、原因究明のための参考になれば幸いです。