0

顧客名のリストをソートするマクロを作成しましたが、動作しますが、以下に示すように、A2 から A47 までのリストをソートします。リストのサイズが大きくなったり小さくなったりすると、マクロが適切に機能しなくなるのではないかと心配しています。これを調整して、列 A に続くすべてのリストで並べ替えマクロが機能するようにするにはどうすればよいですか。ありがとうございます。

Sub ByCustomerName()
'
' ByCustomerName Macro
' Sorts by Customer Name
'

'
    ActiveWorkbook.Worksheets("My Customers").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("My Customers").Sort.SortFields.Add Key:=Range( _
    "A2:A47"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
    xlSortNormal

    With ActiveWorkbook.Worksheets("My Customers").Sort
        .SetRange Range("A1:B47")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub
4

2 に答える 2

0

試すRange("A1", Range("A1").End(xlDown))

これにより、A1 で始まるすべての空でない行が選択されます。

于 2013-11-04T22:08:51.770 に答える
0

ハードコーディングするのではなく、範囲を設定するだけで済みます\

変化する.SetRange Range("A1:B47")


コードの先頭で試してください

Dim sortRange As Range
Dim lastRow As Long
Dim ws As Worksheet

Set ws = Sheet1

lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

Set sortRange = Range("A1:B" & lastRow)

それで.SetRange sortRange

于 2013-11-04T22:05:52.083 に答える