Сортировать значения от А до Я - PullRequest
0 голосов
/ 24 августа 2018

Привет! Я создал код, который добавляет значения в определенные диапазоны. Эти диапазоны уже имеют формулу, которая позволяет диапазону стать динамическим.

Я хочу отсортировать только один из названных диапазонов от A до Z, который называется «Имя».

Проблема, с которой я столкнулся, заключается в том, что она сортируется, но фактически не сортирует ни одно из значений. Может кто-нибудь помочь, пожалуйста?

Ниже мой код

Private Sub CommandButton1_Click()

Dim LRow As Long
Dim BRow As Long

Dim ws6 As Worksheet

Application.ScreenUpdating = False

Set ws6 = Worksheets("Lookup Vals")

    LRow = ws6.Range("C:C").Find(What:="*", SearchOrder:=xlRows, _
        SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1

    ws6.Cells(LRow, 3).Value = Me.tbLNName.Value

    Select Case True
    Case Me.CBLNComp.Value = "Type1": BRow = ws6.Range("L:L").Find(What:="*", SearchOrder:=xlRows, _
                                                SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1
        ws6.Cells(BRow, 12).Value = Me.tbLNName.Value
        ws6.Cells(BRow, 13).Value = Me.tbLNBP.Value
        ws6.Cells(BRow, 14).Value = Me.CBLNComp.Value

    Case Me.CBLNComp.Value = "Type2": BRow = ws6.Range("P:P").Find(What:="*", SearchOrder:=xlRows, _
                                                SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1
        ws6.Cells(BRow, 16).Value = Me.tbLNName.Value
        ws6.Cells(BRow, 17).Value = Me.tbLNBP.Value
        ws6.Cells(BRow, 18).Value = Me.CBLNComp.Value

    End Select

Application.ScreenUpdating = True

With ActiveWorkbook.Worksheets("Lookup Vals").AutoFilter.Sort
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

Unload AddBP

End Sub

1 Ответ

0 голосов
/ 24 августа 2018

Я считаю, что следующее должно помочь, вы не указали диапазон, к которому хотите применить сортировку:

Private Sub CommandButton1_Click()
Dim LRow As Long
Dim BRow As Long
Dim ws6 As Worksheet: Set ws6 = ThisWorkbook.Worksheets("Lookup Vals")

Application.ScreenUpdating = False

    LRow = ws6.Range("C:C").Find(What:="*", SearchOrder:=xlRows, _
        SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1

    ws6.Cells(LRow, 3).Value = Me.tbLNName.Value

    Select Case True
    Case Me.CBLNComp.Value = "Type1": BRow = ws6.Range("L:L").Find(What:="*", SearchOrder:=xlRows, _
                                                SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1
        ws6.Cells(BRow, 12).Value = Me.tbLNName.Value
        ws6.Cells(BRow, 13).Value = Me.tbLNBP.Value
        ws6.Cells(BRow, 14).Value = Me.CBLNComp.Value

    Case Me.CBLNComp.Value = "Type2": BRow = ws6.Range("P:P").Find(What:="*", SearchOrder:=xlRows, _
                                                SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1
        ws6.Cells(BRow, 16).Value = Me.tbLNName.Value
        ws6.Cells(BRow, 17).Value = Me.tbLNBP.Value
        ws6.Cells(BRow, 18).Value = Me.CBLNComp.Value

    End Select

Application.ScreenUpdating = True

    ws6.Sort.SortFields.Clear
    ws6.Sort.SortFields.Add Key:=Range("Name"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ws6.Sort
        .SetRange Range("Name")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
Unload AddBP
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...