2016-05-13 22 views
1

見出しを見つけるために列Aの範囲をループしています。一度見つかったら、最後に使用したセルまで次のセルを選択する必要があります。Excel VBAセルとxlDownを使用して範囲を選択

は私の人生のために私はRange(Cells(k + 1, 1), Cells(k + 1, 1).End(xlDown))を試してみました

For k = 1 To lastCell 
    If Cells(k, 1).Value = rangeName Then 
     Range(Range(Cells(k + 1, 1)), Range(Cells(k + 1, 1)).End(xlDown)).Select 
    End If 
Next k 

細胞とEnd(xlDown)を使用して、この範囲を選択することはできませんが、ない組み合わせは動作しません。

列A、データの例では、空白のセルがありますがようにある:rangeNameは、例えばGENDERに等しくなるようにした場合

MONTH 
Jan 
Feb 

AGE 
18-21 
22+ 

GENDER 
Male 
Female 
Horse 

は、どのように私は、この範囲を選択して行くでしょう。

答えて

1

以下は動作するはずです:

For k = 1 To lastCell 
    If Cells(k, 1).Value = rangeName Then 
     Range(Cells(k + 1, 1), Cells(k + 1, 1).End(xlDown)).Select 
    End If 
Next k 

をしかし、私はあなたがそれを確実にするために、より明示的にビットをコーディングすることをお勧めしたいことは動作します:

With Worksheets("SheetYouAreWorkingOn") 
    For k = 1 To lastCell 
     If .Cells(k, 1).Value = rangeName Then 
      .Range(.Cells(k + 1, 1), .Cells(k + 1, 1).End(xlDown)).Select 
     End If 
    Next k 
End With 

空の上のサンプルデータでテスト/新しいファイル:

Public Sub tmpSO() 

Dim lastCell As Long 
Dim rangeName As String 

rangeName = "AGE" 

With Worksheets("Sheet1") 
    lastCell = .Cells(.Rows.Count, 1).End(xlUp).Row 
    For k = 1 To lastCell 
     If .Cells(k, 1).Value = rangeName Then 
      .Range(.Cells(k + 1, 1), .Cells(k + 1, 1).End(xlDown)).Select 
     End If 
    Next k 
End With 

End Sub 
+0

回答と追加情報をありがとう、これは動作しており、私はあなたが提供した明示的なサンプルをimplimented。 –

関連する問題