无法识别像元值

问题描述

在以下代码中,无法识别“ m3”和“%Pieces”的单元格值,也无法识别所有为空的单元格。如果我重复这3次,那么它将应用于所有符合条件的单元格。如何以这种方式编写代码,而不必重复3次?我已经多次检查了拼写。


Dim Summary As Workbook
Dim Osheet As Worksheet
Dim Dsheet1 As Worksheet
Dim Dsheet2 As Worksheet
Dim cel As Range
Dim Rng1 As Range
Dim Rng2 As Range
Dim Rng3 As Range

TurnOffFunctionality
Application.ScreenUpdating = False
Application.displayAlerts = False

Set Summary = Workbooks("Quesnel Sawmill Monthly Production Summary - Blank.xlsm")
Set Osheet = ActiveWorkbook.Worksheets("Sheet1")
Set Dsheet1 = Summary.Worksheets("Sorter 1 Production")
Set Dsheet2 = Summary.Worksheets("Sorter 2 Production")
Set Rng1 = Osheet.Range("C:U")
Set Rng2 = Osheet.Range("E12:E100")
Set Rng3 = Osheet.Range("A12:V12")

With Osheet
        Rng1.Unmerge
        Rng1.WrapText = False
        
        Osheet.Range("E12:E100").TextToColumns Destination:=Range("E12"),DataType:=xlDelimited,_
        TextQualifier:=xlDoubleQuote,ConsecutiveDelimiter:=False,Tab:=True,_
        Semicolon:=False,Comma:=False,Space:=False,Other:=False,FieldInfo _
        :=Array(1,2),TrailingMinusNumbers:=True
        
        For Each cel In Rng2
        If cel.Value = "FBM" Then
        cel.EntireRow.Delete
        ElseIf cel.Value = "m3" Then
        cel.EntireRow.Delete
        ElseIf cel.Value = "% FBM" Then
        cel.EntireRow.Delete
        ElseIf cel.Value = "% Pieces" Then
        cel.EntireRow.Delete
        ElseIf cel.Value = "" Then
        cel.EntireRow.Delete
        End If
        Next
        
        For Each cel In Rng3
        If cel.Value = "" Then
        cel.EntireColumn.Delete
        End If
        Next
        
        Range("A18").ClearContents
        Columns("B:J").AutoFit
End With

TurnOnFunctionality
Application.ScreenUpdating = True
Application.displayAlerts = True

End Sub

解决方法

每当您循环和删除行时,事情就会变得混乱。 删除非常耗时。 我建议将行数据放在临时表或数组中,然后清理母版表进行计算并放回干净的数据。