这是我使用 Stack Overflow 的第一篇文章,但我确实利用了现有的精彩 vba 知识数据库。我将简要介绍寻求帮助的目的,然后列出随之而来的代码。
我收到了一份员工名单,其中包括姓名、工作年限、轮班、测试地点和公司职位,并被要求创建一份周末加班的员工名单。我已经能够根据用户输入的周六和周日值以及他们想要工作的小时数等生成列表。现在我开始创建一个基于 7 个优先级列表的排序函数,这些优先级将更改为星期。
我发现了一篇精彩的帖子,它允许我创建一个命令按钮,该按钮将根据用户单击按钮来更改其评论框。第一次单击将显示“Site Priority On”,第二次单击将显示“Site Priority Off”。然后它将在每次单击时继续来回变化。第一次单击时,它运行一个宏以根据用户可以输入的自定义优先级列表进行排序,第二次单击运行一个宏,将列表返回到其原始布局。依此类推,每次点击从一种排序到另一种排序。
现在,无论按钮被按下多少次,第二个宏都可以正常工作。但是,我的 customsort 列表只会在第一次单击时按降序排列。在按钮返回到基于优先级的排序后,它会将我的顺序从列列表的降序翻转到列表从最低优先级到最高优先级的升序。我尝试添加代码以删除自定义排序顺序并在每次运行宏时重新创建它,但它在第一次运行后继续切换到升序。
这是我的命令按钮代码:
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
这是我的自定义排序代码:
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)然后是自定义排序(通常的选项)。
谁能想到代码在运行两次后从降序变为升序的原因?以及为什么在第二次单击后,无论运行多少次,它总是选择升序。
谢谢