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

Excel VBA宏:按Assigned列非空条件移动行至另一表格

解决Excel VBA宏移动非空分配任务行的问题

你的代码核心问题是空值判断逻辑错误,IsEmpty(False)的写法完全不符合函数用法,导致判断逻辑反转,把空行移走了。以下是修正后的代码,以及关键修改说明:

修正后的完整代码

' Move assigned NewTasks to the AssignedTasks list '
Sub MoveAssignedTasks()
    Dim wb As Workbook, loOpen As ListObject, loClosed As ListObject
    Dim lr As ListRow, i As Long
    
    Set wb = ActiveWorkbook
    Set loOpen = wb.Worksheets("NewTasks").ListObjects("Table1")
    Set loClosed = wb.Worksheets("AssignedTasks").ListObjects("Table3")
    
    ' 从后往前遍历,避免删除行导致索引错乱
    For i = loOpen.ListRows.Count To 1 Step -1
        Set lr = loOpen.ListRows(i)
        ' 判断第14列(Assigned列)是否非空,同时排除仅含空格的情况
        If Len(Trim(lr.Range.Cells(14).Value)) > 0 Then
            ' 复制整行到目标表格末尾
            lr.Range.Copy loClosed.ListRows.Add.Range.Cells(1)
            ' 删除原表格中的该行
            lr.Delete
        End If
    Next i
End Sub

关键修改说明

  1. 修正空值判断逻辑:
    原代码的Case IsEmpty(False)是错误用法,IsEmpty函数需要传入要检查的单元格对象,正确的非空判断可以用Not IsEmpty(lr.Range.Cells(14))。这里额外用Len(Trim(...)) > 0,能避免单元格仅包含空格时被误判为已分配的情况。
  2. 替换Select Case为If语句:
    因为只有一个判断条件,用If比Select Case更简洁直观,减少代码冗余。
  3. 优化宏名称:
    把原名称MoveClosed改为MoveAssignedTasks,更贴合功能语义,方便后续维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 08:23:20