Я сортирую по алфавиту по секторам. Макрос выполняется, но часто оставляет 1 значение несортированным. Например, он дает мне следующий вывод: вторая строка данных неправильно отсортирована.
| Security | Sector | Region | Country |
|---------------------------------|--------------------------|----------|-----------|
| Carlsberg Class B | Consumer Staples | Europe | Denmark |
| Broedrene A & O Johansen Pref | Industrials ERROR HERE | Europe | Denmark |
| Jyske Bank | Financials | Europe | Denmark |
| Tryg | Financials | Europe | Denmark |
| Ringkjobing Landbobank | Financials | Europe | Denmark |
| Demant | Health Care | Europe | Denmark |
| Novo Nordisk Class B | Health Care | Europe | Denmark |
| Gn Store Nord | Health Care | Europe | Denmark |
| Nkt | Industrials | Europe | Denmark |
| Iss | Industrials | Europe | Denmark |
| Flsmidth And Co. | Industrials | Europe | Denmark |
| A P Moller Maersk Class B | Industrials | Europe | Denmark |
| Vestas Wind Systems | Industrials | Europe | Denmark |
| Dsv Panalpina | Industrials | Europe | Denmark |
| Columbus | Information Technology | Europe | Denmark |
Код, который я использую:
Dim tbl as ListObject
Set tbl = Sheets(1).ListObjects("Table1")
With tbl.Sort
.SortFields.Clear
.SortFields.Add Key:=Range("Table1[Sector]"), SortOn:=xlSortOnValues,
Order:=xlAscending
.Header = xlYes
.Apply
End With
Данные в таблице динамически вставляются изSQL-запрос, прежде чем он будет отсортирован. Я оставил этот код вне. Когда я использую секундомер и вручную прохожу каждую строку, она сортируется правильно, что заставляет меня думать, что это как-то связано с таймером. Я пробовал Application.Wait (Now + TimeValue("0:00:02"))
и DoEvents
, но ни одна из них не решила проблему.