2017-06-01 6 views
0

この例では、単一の列のすべてのデータを選択するVBA文を記述します。列のデータに空白はありません。列の位置は決して変わらない。列Aで始まり、データは行3から始まります。ただし、列の行の合計数は定期的に変更されます。可変数の行を含む列のすべてのデータを選択します。

私は、列内のすべてのセルを動的に選択し、これらの選択されたデータに対してメソッドを実行できるようにします。

+0

もう少し自分の問題について詳しく説明してください。今のところ私は疑問符を見ていません。 :) – larsemil

+0

実行したい方法は何ですか?実際にはデータを選択する必要はないかもしれません - 一般的なルールとして、範囲でアクションを実行する前に選択する必要はありません。 –

答えて

0

Dim LastRow as Long, sht as worksheet 
Set sht = ThisWorkbook.Worksheets("My Sheet Name")  
LastRow = sht.Cells(sht.Rows.Count, 1).End(xlUp).Row 
sht.Range("A3:A" & LastRow).Select 

を試してみてくださいダレンBartrup-クックが言うように、あなたはほとんど常にはるかに高速で直接アクションを実行することができ、データを選択する必要がないかもしれません。

0

あなたの列は、他の空白以外のセルは、使用することができ、あなたのデータに手を触れないで意味する「単離された」の場合:

Range("firstCellInYourColumn").CurrentRegion.Select 

(これは、キーボードからのCtrl + *と同じように動作します)

そうでない場合は使用します。

Range(Range("firstCellInYourColumn"), Range("firstCellInYourColumn").End(xlDown)).Select 

あなたのデータ内には空白が本当に存在しない場合の両方がを動作します。 Rangeの前にワークシート式を追加する必要があります。これを省略しました。それを選択せず​​に、あなたの範囲のアクションを実行する例として

0

Public Sub Test() 

    Dim rColA As Range 

    With ThisWorkbook.Worksheets("Sheet1") 
     Set rColA = .Range(.Cells(3, 1), .Cells(.Rows.Count, 1).End(xlUp)) 
     MsgBox "Column A range is " & rColA.Address 'Delete if you want. 

     rColA.Interior.Color = RGB(255, 0, 0) 'Turn the back colour red. 

     rColA.Cells(2, 1).Insert Shift:=xlDown 'Insert a blank row at second cell in range 
               'So will insert at A4. 

     'If the first cell in your range is a number then double it. 
     If IsNumeric(rColA.Cells(1, 1)) Then 
      rColA.Cells(1, 1) = rColA.Cells(1, 1) * 2 
     End If 

    End With 

End Sub 
関連する問題