Проблема с сортировкой

Программирование на Visual Basic for Applications
dimonbk
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 03.01.2006 (Вт) 14:57

Проблема с сортировкой

Сообщение dimonbk » 28.11.2008 (Пт) 9:53

Доброго времени суток!
Поиск не дал результатов
Хочу отсортировать список по двум ключам: Первый с помощью пользовательских списков, второй по возрастанию
Ниже представлены два варианта кода, в первом в поле CustomOrder ставлю список и сортировка проходит, а во втором переменную которая содержит этот список.
Так вот проблема в том что почему то когда в CustomOrder стоит переменная он выдает ошибку "13"- Type Mismatch, это переменная говорит о несоответствии типа переменной, но пробовал ставить тип переменной Variant и String результат один.
Цель всего этого действия, чтобы макрос автоматически хватал пользовательский список с листа и сортировал по нему. Просто вдруг я захочу изменить список и как то постоянно лазить в макрос и править там тоже список меня не прикалывает.
Жирным выделено проблемное место
Помогите если кто может, заранее спасибо

Первый вариант программного кода когда макрос работает

Sub Macros2()


ActiveWorkbook.Worksheets("База").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("База").AutoFilter.Sort.SortFields.Add Key:=Range( _
"A2:A2453"), SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
"Договор,Задолженность,Начислено,Оплачено" _

, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("База").AutoFilter.Sort.SortFields.Add Key:=Range( _
"D2:D2453"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("База").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub

Второй вариант программного кода когда макрос неработает

Sub Macros2()

Dim ListArrayForSort
ListArrayForSort = "Договор,Задолженность,Начислено,Оплачено"

ActiveWorkbook.Worksheets("База").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("База").AutoFilter.Sort.SortFields.Add Key:=Range( _
"A2:A2453"), SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
ListArrayForSort _

, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("База").AutoFilter.Sort.SortFields.Add Key:=Range( _
"D2:D2453"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("База").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Все будет хорошо

dimonbk
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 03.01.2006 (Вт) 14:57

Re: Проблема с сортировкой

Сообщение dimonbk » 02.12.2008 (Вт) 21:16

Ну хоть кто-нибудь, помогите
Все будет хорошо

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Проблема с сортировкой

Сообщение alibek » 02.12.2008 (Вт) 23:20

Попробуй объявить переменную As String. Да и запятую в списках я бы заменил на точку с запятой.
Но это так, про оформление. А от ошибки поможет избавиться CVar(ListArrayForSort) вместо просто переменной. Хотя это и странно и смахивает на глюк.
Lasciate ogni speranza, voi ch'entrate.

dimonbk
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 03.01.2006 (Вт) 14:57

Re: Проблема с сортировкой

Сообщение dimonbk » 03.12.2008 (Ср) 20:38

Спасибо огромное, всё получилось. Я думал что As Variant хватит, а окащывается еще CVar нужно использовать. В общем спасибо
Все будет хорошо


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 111

    TopList