VBA-Excel Упорядочить столбцы в алфавитном порядке при добавлении нового столбца - PullRequest
0 голосов
/ 19 ноября 2018

У меня проблемы с файлом при добавлении нового столбца через VBA. При нажатии на кнопку он получает идентификационный номер процесса и создает столбец таблицы на другом листе.

Как изменить порядок столбцов в алфавитном порядке (по значению заголовка) при каждом добавлении нового столбца.

Число столбцов является динамическим, и я не могу знать имя заголовка, пока пользователь не создаст процесс.

Это мой текущий код:

'Create a new column on the process assignment table
Sheets("T_PRAS").ListObjects("T_PRAS").ListColumns.Add.Name = "PR_" & Sheets("Administrador").Range("B53").Value

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Попробуйте

Sub test()
    Dim Ws As Worksheet
    Dim obj As ListObject
    Dim rng As Range

    Set Ws = Sheets("T_PRAS")
    Set obj = Ws.ListObjects("T_PRAS")
    Set rng = obj.DataBodyRange.CurrentRegion
    With Ws.Sort
        .SetRange rng
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlLeftToRight
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub
0 голосов
/ 20 ноября 2018

Это умеренно протестировано, но я сделал то же самое при сортировке рабочих таблиц, и это, похоже, работает и с вашей таблицей.

Dim x As Long, y As Long, tbl As ListObject
Set tbl = ActiveSheet.ListObjects("T_PRAS")

' Loop through each column
With tbl.ListColumns
    For x = 1 To tbl.ListColumns.Count
        For y = x + 1 To tbl.ListColumns.Count
            If .Item(y).Name < .Item(x).Name Then
                .Item(y).Range.Cut
                .Item(x).Range.Insert xlRight
            End If
        Next y
    Next x
End With

По сути, у вас есть два цикла.Первый цикл сравнивает имя столбца со вторым, и если имя второго цикла предшествует первому, то этот столбец будет перемещен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...