【发布时间】:2020-06-24 16:13:40
【问题描述】:
我正在尝试按我称之为“Seq”的用户定义字段对我的任务进行排序。当我使用 VBA 执行此操作时,它似乎什么也没做。但是,当按默认字段(如 DueDate)进行排序时,这非常有效。有没有人有办法解决吗?我包括我的代码和结果。我正在使用 Outlook 2010。提前致谢!
代码如下:
Sub TestSort()
Dim ToDoFolder As Folder
Dim Task As TaskItem
Dim Sel As Outlook.Items
Dim InitStartTime As Date
Dim RemindTime As Date
Dim FilterString As String
'FORCE CHANGE CURRENT FOLDER TO BE "TO DO LIST" AND VIEW TO BE "Debug (Filter:TEST)"
Set ToDoFolder = Session.GetDefaultFolder(olFolderToDo)
Set Application.ActiveExplorer.CurrentFolder = ToDoFolder
ToDoFolder.Views.Item("Debug (Filter:TEST)").Apply
'AUTOMATICALLY SELECT TASK ITEMS TO BE WORKED WITH
FilterString = "@SQL=" & ToDoFolder.Views.Item("Debug (Filter:TEST)").Filter
Set Sel = ToDoFolder.Items.Restrict(FilterString)
'SHOW ORIGINAL SORTING
Debug.Print Chr(13); "Sort by Original"
Call CheckSort(Task, Sel)
'SORT TASKS IN MY SELECTION (AND CHECK SORT)
Sel.Sort "[Seq]", False
Debug.Print Chr(13); "Sort by Seq Ascending"
Call CheckSort(Task, Sel)
Sel.Sort "[Seq]", True
Debug.Print Chr(13); "Sort by Seq Descending"
Call CheckSort(Task, Sel)
Sel.Sort "[DueDate]", False
Debug.Print Chr(13); "Sort by DueDate Ascending"
Call CheckSort(Task, Sel)
Sel.Sort "[DueDate]", True
Debug.Print Chr(13); "Sort by DueDate Descending"
Call CheckSort(Task, Sel)
End Sub
Sub CheckSort(Task As Outlook.TaskItem, Sel As Outlook.Items)
'CHECK THAT IT WAS SORTED CORRECTLY
Debug.Print Chr(13);
For Each Task In Sel
Seq = Task.UserProperties.Find("Seq").Value
Debug.Print Seq & " " & Task.Subject & " " & Task.DueDate
Next Task
End Sub
结果如下:
Sort by Original
2 Test 1 6/6/2018
4 Test 2 6/8/2018
1 Test 3 6/10/2018
3 Test 4 6/9/2018
Sort by Seq Ascending
2 Test 1 6/6/2018
4 Test 2 6/8/2018
1 Test 3 6/10/2018
3 Test 4 6/9/2018
Sort by Seq Descending
2 Test 1 6/6/2018
4 Test 2 6/8/2018
1 Test 3 6/10/2018
3 Test 4 6/9/2018
Sort by DueDate Ascending
2 Test 1 6/6/2018
4 Test 2 6/8/2018
3 Test 4 6/9/2018
1 Test 3 6/10/2018
Sort by DueDate Descending
1 Test 3 6/10/2018
3 Test 4 6/9/2018
4 Test 2 6/8/2018
2 Test 1 6/6/2018
【问题讨论】:
-
如果您尝试在 UI 中进行排序,则会出现“您无法按此字段排序”。信息。您可能需要编写自己的排序程序。