web-dev-qa-db-ja.com

特定の列によるVBA Excelのソート範囲

任意の数の行を含むことができるテーブルがあります:

enter image description here

前述したように、1行または∞行を含めることができます。

範囲A3:D∞を列Bにある日付セルでソートしたいのですが、どうすればよいですか?

問題は、A3から最後の行まで選択する方法がわからないことです。

最後の行へのループは正しい方法ではないと思います。

これまでのところ、これは正しいように見えますが、範囲はハードコードされています。範囲のハードコーディングを取り除くにはどうすればよいですか?

Range("A3:D8").Sort key1:=Range("B3:B8"), _
order1:=xlAscending, Header:=xlNo
34
Cheese

このコードを試してください:

Dim lastrow As Long
lastrow = Cells(Rows.Count, 2).End(xlUp).Row
Range("A3:D" & lastrow).Sort key1:=Range("B3:B" & lastrow), _
   order1:=xlAscending, Header:=xlNo
80
Dmitry Pavliv

またはこれ:

Range("A2", Range("D" & Rows.Count).End(xlUp).Address).Sort Key1:=[b3], _
    Order1:=xlAscending, Header:=xlYes
13
L42