Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 使用命令按钮执行两种不同的排序功能_Sorting_Excel_Custom Lists_Vba - Fatal编程技术网

Sorting 使用命令按钮执行两种不同的排序功能

Sorting 使用命令按钮执行两种不同的排序功能,sorting,excel,custom-lists,vba,Sorting,Excel,Custom Lists,Vba,这是我第一篇使用堆栈溢出的文章,但我肯定已经利用了vba知识数据库的优势。我将简要介绍一下寻求帮助的目的,然后列出与之配套的代码 我收到了一份员工名单,包括姓名、工作年限、轮班、测试地点和公司职位,并被要求创建一份周末加班员工名单。我已经能够根据用户输入的周六和周日的值以及他们想要工作的小时数等生成列表。现在我开始创建一个基于7个优先级列表的排序功能,这些优先级将每周更改 我发现了一篇精彩的文章,它允许我创建一个命令按钮,根据用户点击按钮来更改其评论框。第一次单击将显示“站点优先级打开”,第二次

这是我第一篇使用堆栈溢出的文章,但我肯定已经利用了vba知识数据库的优势。我将简要介绍一下寻求帮助的目的,然后列出与之配套的代码

我收到了一份员工名单,包括姓名、工作年限、轮班、测试地点和公司职位,并被要求创建一份周末加班员工名单。我已经能够根据用户输入的周六和周日的值以及他们想要工作的小时数等生成列表。现在我开始创建一个基于7个优先级列表的排序功能,这些优先级将每周更改

我发现了一篇精彩的文章,它允许我创建一个命令按钮,根据用户点击按钮来更改其评论框。第一次单击将显示“站点优先级打开”,第二次单击显示“站点优先级关闭”。然后,每次单击都将继续前后更改。第一次单击时,它运行一个宏,根据用户可以输入的自定义优先级列表进行排序,第二次单击时运行一个宏,将列表返回到其原始布局。每次单击,从一个排序到另一个排序,依此类推

现在,无论按钮按下多少次,第二个宏的所有操作都正常。但是,我的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
以下是我的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)和自定义排序(通常的选项)的选项

有人能想出代码在运行两次后从降序变为升序的原因吗?为什么在第二次单击之后,无论运行多少次,它都会选择升序

谢谢是否
子排序函数()
在同一排序区域/工作表上工作。。。它是否会留下您在Sub
PrioritySort()
中无法捕捉到的不需要的设置


<>你可以考虑在工作表中保存排序顺序(以及页眉和方向);您可能希望明确地设置它,例如,
Order1:=xlAscending
以避免另一个子系统中的另一个排序将其翻转。

是的,两个宏每次都在同一工作表和排序区域内工作。我遇到的问题是,我使用自定义列表生成Application.AddCustomList(范围(“T3:T9”))并选择第二个排序选项,该选项始终是列表,但向后。你是对的,我在创建自定义排序时在订单需求中添加了该选项,现在该选项工作正常。谢谢你的帮助!我的荣幸。。。考虑“接受”我的答案,这样别人就可以看到“它已经解决了”。