2013-10-04 3 views
0

Это мой первый пост с использованием Stack Overflow, но я определенно воспользовался замечательной базой данных присутствия vba. Я дам краткое введение цели поиска помощи, а затем перечислить код, который идет вместе с ним.Использование командной кнопки для 2-х различных функций сортировки

Мне был предоставлен список сотрудников, состоящий из имен, лет работы, смены, места тестирования и должности в компании, и мне предлагается создать список сотрудников в выходные дни. Я смог создать список на основе введенных пользователем значений субботы и воскресенья, а также количества часов, в течение которых они хотят работать, и т. Д. Теперь я начинаю создавать функцию сортировки, основанную на списке из 7 априорных событий, который изменит неделю на неделю.

Я нашел замечательное сообщение, которое позволило мне создать кнопку команды, которая изменит его поле для комментариев на основе нажатия на кнопку. В первом клике появится «Приоритет сайта», а второй клик с отображением «Приоритет сайта выключен». Затем он будет продолжать изменяться взад и вперед каждый раз. При щелчке в первый раз, когда выполняется макрос для сортировки на основе пользовательского списка приоритетов, которые могут быть введены пользователем, а второй щелчок запускает макрос, который возвращает список обратно к исходному макету. И так далее и т. Д. От 1-го класса до другого каждый клик.

Теперь все работает отлично для второго макроса независимо от того, сколько раз кнопка нажата. Однако мой список таможни будет работать только в порядке убывания первого щелчка. После того, как кнопка вернется к сортировке в зависимости от приоритета, она сбрасывает мой заказ с нисходящего вниз по списку столбцов, чтобы увеличить список с наименьшего приоритета до наибольшего. Я попытался добавить код, чтобы удалить пользовательский порядок сортировки и воссоздать его каждый раз, когда он запускает макрос, но он продолжает переключаться в порядке возрастания после первого запуска.

Вот мой код для командной кнопки:

Private Sub CommandButton4_Click() 

Select Case CommandButton4.Caption 
    Case "Site Priority Off" 
     Call PrioritySort 
     CommandButton4.Caption = "Site Priority On" 
    Case "Site Priority On" 
     Call SortOff 
     CommandButton4.Caption = "Site Priority Off" 
    End Select 
End Sub 

Вот мой код customsort:

Sub PrioritySort() 


    ActiveWorkbook.Worksheets("Preliminary List").Sort.SortFields.Clear 
    Range("S12:Z55").Select 
    Application.AddCustomList (Range("T3:T9")) 
    Selection.Sort key1:=Range("V12:V55"), OrderCustom:=6, Header:=xlYes, _ 
    MatchCase:=False, Orientation:=xlTopToBottom 

end sub 

Когда я бегу Рода во второй раз с помощью кнопки команды я открыл вариант сортировки вручную и посмотрел, что говорит уровень для порядка сортировки. Он дает варианты от наименьшего до самого большого, от максимального к наименьшему, списка сортировки пользовательских сортировок (обычно это что-то вроде 3B, 6, 7, 3E), пользовательский список сортировки по возрастанию (это всегда один и тот же список, но назад, как 3E, 7, 6, 3B), а затем пользовательский сортировка (обычная опция).

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

Благодаря

ответ

0

ли Sub SortOff() работа на одной и той же области сортировки/лист ... и может ли она оставить ненужные параметры позади, что вы не ловите в Sub PrioritySort()?

Вы можете считать, что порядок сортировки (а также заголовок и ориентация) сохраняется на листе; вы можете установить его явно, например. Order1:=xlAscending не рисковать тем, что другой сорт в другом Sub переворачивает его.

+0

Да, оба макроса работают в одном и том же рабочем листе и сортируются каждый раз. Проблема, с которой я столкнулась, заключается в том, что он принимает собственный список, который у меня есть, создавая Application.AddCustomList (Range («T3: T9»)) и выбирает второй вариант сортировки, который всегда является списком, но назад. –

+0

Вы были правы, я добавил в заказе требование при создании таможни, и он отлично работает сейчас. Спасибо за вашу помощь! –

+0

мое удовольствие ... рассмотрите «принятие» моего ответа, чтобы другие могли видеть, что «это было решено», – MikeD

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