根据条件清除内容的VBA代码

VBA Code to Clear Contents Based on Criteria

提问人:STengineer 提问时间:11/10/2023 更新时间:11/10/2023 访问量:4

问:

我需要自动清除ERP程序输出中粘贴数据中的错误。粘贴的数据范围是从 A 列到 M 列,但 N 列用于通过“DATEVALUE”命令将 K 列中基于文本的日期条目(条件格式不可用)转换为可用日期。整个数据集的长度超过 3,000 行。

我还在 P 列中添加了一个命令 [IF(ISERROR...)],以创建用于识别错误的替代方法。下面的代码未使用此方法,但在节标题中引用了此方法。

重要提示:我需要在粘贴数据(因此称为子Worksheet_Change)或用户单击其他相邻选项卡(以单独的分组报告数据)时自动启动此代码。


这是我一直在尝试调试的VBA代码...

Private Sub Worksheet_Change(ByVal 目标作为范围) 调暗为变体 昏暗 i As Long

'ASSIGN THE NUMBER OF FILLED ROWS IN COLUMN 'A' TO VARIABLE "n"
    n = Range("B2").Value
    'MsgBox "n = " & n
    
                        
'FOR / NEXT loop to locate "TRUE" in column P and Clear Contents of the cell in column K of that row
     'i.e.:  CLEAR CONTENTS OF 'TXTEXT' CELLS THAT RESULT IN "#VALUE!" IN "CERT DATE" COLUMN
   
    For i = 202 To (202 + n - 3109) 'for rows 202 to 209
        'Cells("K", i).Value = WorksheetFunction.IfError(Cells("K", i).ClearContents)  (UNUSED LINE)
        'If Sheet1.Range("N" & i) <> "Open" Then                                       (UNUSED LINE)
            Range("K" & i).ClearContents
        If Application.WorksheetFunction.IsError("N" & i) Then Range("K" & i).ClearContents
        
        MsgBox "i = " & i
        End If
        MsgBox "The last i = " & i
    Next i

结束副

感谢所有评论此内容的人。

斯蒂芬

我应该解释一下,K列包含大部分好的日期,但一些空白单元格包含ERP软件的错误。

我期望代码能够获取最大数量的行(已存在于单元格 B2 中),并在 For/Next 循环中使用它来测试 K 列的条目是否存在错误。如果在 K 列中识别出错误,则代码通过 If...IsError,将清除同一行 K 列中单元格的内容。删除 K 列中的错误将改进直接从此“数据选项卡”中提取数据的分组选项卡的功能。

for 循环 if 语句

评论

0赞 STengineer 11/10/2023
我需要澄清“For”行的数字:这是对“IsError”命令的测试(第207行和第208行包含有问题的错误)以及“n”值的准确性。

答: 暂无答案