| 
    
     |  | ▼nakataka さん: 
 説明不足過ぎましたね済みません。
 先ずRSは範囲初め、REは範囲の最後行を表します。
 RS=0は範囲の初めが設定されていない状態です。
 
 一応下に説明加えましたがデータがスペース等なく、1〜10以下の数字で
 埋められているのならば参照セルが1かどうかだけを判断してやれば
 良いと思います。(最初の範囲の処理だけは注意が必要)
 
 Sub test2()
 Dim i As Long, j As Long
 Dim RS As Long
 j = 1
 RS = 2 'データが2行目から始まる前提です。でなければフラグが必要
 For i = 3 To Cells(65536, 1).End(xlUp).Row
 If Cells(i, TC).Value = 1 Then
 Range(Cells(RS, 1), Cells(i - 1, 2)).Select
 MsgBox "範囲 " & j & " です"
 RS = i
 End If
 Next i
 End Sub
 
 >Sub test()
 >  Dim i As Long, j As Long
 >  Dim RS As Long, RE As Long
 >  Dim TC As Integer 'データのある列数
 >  j = 1
 >  TC = 1
 >  For i = 2 To Cells(65536, TC).End(xlUp).Row
 >    If Cells(i, TC).Value = 1 Then
 参照セルが1の場合は強制的にRS=参照行となるのですが
 >      If RS = 0 Then
 >        RS = i
 >      Else
 RS<>0の場合は以前の範囲指定処理が済んでいない状態(例9で終わる)
 ですので範囲の終わりは今参照している一つ上の行(=i-1)です
 >        RE = i - 1
 >        Rows(RS & ":" & RE).Select
 >        MsgBox "範囲 " & j & " です"
 >        j = j + 1
 前の範囲処理が済んでから、範囲設定RS=参照行を行います。
 >        RS = i
 >        RE = 0
 >      End If
 >途中のRS =0から下がもう一つ動きがわかりません。
 >RE=i-1など詳しく教えてもらえませんでしょうか?
 
 |  |