You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MS Project中查找指定UID并解决对应宏代码运行失效问题

原宏故障原因
  • 冗余前置代码:开头给项目摘要任务Number10字段赋值的代码无实际作用,且未做选中任务校验,空选状态下运行会直接报错
  • 变量类型错误:UID和Temp_UID声明为Integer类型,而MS Project的UniqueID实际为长整型,项目任务量超过32767时会触发溢出错误
  • 未处理空任务:遍历Tasks集合时未判断任务是否为Nothing,遇到无效占位任务会直接崩溃
  • 初始值逻辑错误:ID初始值设为1,若要查找的UID恰好对应ID为1的任务,会误判为未找到
  • 筛选逻辑混乱:重复开启自动筛选,未先展开所有任务就遍历,可能导致行号匹配错误
修复后可用的宏代码
Sub FindUID()
    Dim T As Task
    Dim Temp_UID As Long
    Dim UID As Long
    Dim ID As Long
    
    ' 获取用户输入的UID
    UID = InputBox("请输入需要查找的UID", "查找UID")
    ' 初始ID设为0,避免和实际ID为1的任务冲突
    ID = 0
    
    ' 先关闭筛选、展开所有任务,避免行号匹配错误
    ActiveProject.AutoFilter = False
    OutlineShowAllTasks
    
    ' 遍历所有任务
    For Each T In ActiveProject.Tasks
        ' 跳过无效空任务
        If Not T Is Nothing Then
            Temp_UID = T.UniqueID
            If Temp_UID = UID Then
                ID = T.ID
                ' 找到后直接退出循环,不用继续遍历
                Exit For
            End If
        End If
    Next T
    
    If ID > 0 Then
        ' 选中匹配的任务行
        SelectRow Row:=ID, RowRelative:=False
    Else
        MsgBox "未找到对应UID的任务", vbOKOnly, "提示"
    End If
End Sub
使用说明
  • 打开MS Project文件后,按Alt+F11打开VBA编辑器,插入模块,把上述代码粘贴进去
  • 按F5运行宏,在弹窗中输入要查找的UID即可自动定位到对应任务行

内容的提问来源于stack exchange,提问作者Yessenia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 14:06:02