2015-07-27 2 views
0

У меня есть класс vba, который я использую для управления различными представлениями одного и того же объекта ListObject (то есть, фильтрация &), и я получаю некоторое повреждение, которое, похоже, связано с сортировкой. Это кажется достаточно легким для Excel для восстановления с помощью следующей регистрируемой ошибки:Сортировка списка ListObject

...Excel completed file level validation and repair. Some parts of this workbook may have been 
repaired or discarded.</info></additionalInfo><removedRecords summary="Following is a list of 
removed records:"><removedRecord>Removed Records: Sorting from /xl/tables/table1.xml 
part (Table)</removedRecord></removedRecords></recoveryLog> 

Может кто-нибудь увидеть, что проблема может быть от этой ошибки? (Я могу опубликовать код, который я использую, если потребуется)

+0

Необходимо отправить код, пожалуйста. В журналах ремонта нет никакой полезной информации. – Rory

+1

Возможно, это поможет: https://colinlegg.wordpress.com/2015/07/08/naughty-sorts/ –

+0

@ExcelDevelopers; это была «точно» проблема (дублированный ключ диапазона сортировки, оставшийся от вырезания и вставки). Если вы хотите превратить это в ответ, я могу отдать его вам и закрыть это. Благодаря! – Berryl

ответ

0

Убедитесь, что поля сортировки ссылаются на правильные диапазоны, как в приведенном ниже коде, скопированном с colinlegg.wordpress.com/2015/07/08/naughty-sorts.

With wksTarget.Sort 

    With .SortFields 

     .Clear 

     .Add _ 
      Key:=wksTarget.Range("A2:A6"), _ 
      SortOn:=xlSortOnValues, _ 
      Order:=xlDescending, _ 
      DataOption:=xlSortNormal 

     .Add _ 
      Key:=wksTarget.Range("B2:B6"), _ 
      SortOn:=xlSortOnValues, _ 
      Order:=xlDescending, _ 
      DataOption:=xlSortNormal 

     .Add _ 
      Key:=wksTarget.Range("C2:C6"), _ 
      SortOn:=xlSortOnValues, _ 
      Order:=xlDescending, _ 
      DataOption:=xlSortNormal 

    End With 

    .SetRange wksTarget.Range("A1:C6") 
    .Header = xlYes 
    .MatchCase = False 
    .Orientation = xlTopToBottom 
    .SortMethod = xlPinYin 
    .Apply 
End With 

Иногда вы копируете и вставляете код при добавлении новых полей сортировки, а затем забудьте обновить диапазон для свойства Key.

Смежные вопросы