Excel VBA 实现任务录入时对应工时非空校验功能开发求助
解决方案
你现有的代码已经内置了列校验的核心逻辑,仅需做少量修改即可实现需求:
步骤1:替换compareCols校验函数
将你当前的compareCols函数替换为以下版本,新增错误捕获处理、空格过滤,同时将提示修改为你需要的中文内容:
Function compareCols(rng As Range) As String Dim rngC1 As Range, cel As Range ' 错误捕获:避免任务列为空时SpecialCells抛出运行时错误 On Error Resume Next Set rngC1 = rng.Columns(1).SpecialCells(xlCellTypeConstants) On Error GoTo 0 If rngC1 Is Nothing Then compareCols = "OK" Exit Function End If For Each cel In rngC1.Cells ' 核心校验逻辑:任务列有值、工时列为空(自动过滤空格) If cel.Value <> "" And Trim(cel.Offset(0, 1).Value) = "" Then ' 如不需要展示具体出错位置,直接设置为 compareCols = "存在未分配工时的任务" 即可 compareCols = "存在未分配工时的任务,出错位置:" & cel.Offset(0, 1).Address(False, False) Exit Function End If Next cel compareCols = "OK" End Function
步骤2:确认校验执行顺序
你现有CAD_Task_Entry过程已经将校验逻辑放在了数据写入任务跟踪表之前,执行顺序完全正确,无需额外调整。
内容的提问来源于stack exchange,提问作者WaveWalker116
相关产品推荐
相关产品推荐

