VBAselect单元格时不应该用IF Range.Text =“True”?

我有下面的代码,这是一个正在进行的工作,但VBA一直说If Range("G"&CRow).text = "True" then在突出显示的行是真实的,当它显然不是。 任何人都可以帮我解决这个问题吗?

在这里输入图像说明

 Range("G1").FormulaR1C1 = _ "=IF(OR(ISNUMBER(SEARCH(""GS "",RC[-6])),ISNUMBER(SEARCH(""@"",RC[-6]))),""TRUE"",""FALSE"")" Range("G1").AutoFill Destination:=Range("G1:G" & lastrow) With Range("G1:G" & lastrow) .Value = .Value End With Dim T As Integer Dim CRow As Integer CRow = 1 For Each cell In Range("G1:G" & lastrow) If Range("G" & CRow).Text = "TRUE" Then cell.Select ActiveCell.Offset(0, -5).Select If Selection.Value = "" Then Selection.Resize(, 4).Select Selection.Delete Shift:=xlUp ActiveCell.Offset(2, 0).Select Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove CRow = CRow - 1 End If Else CRow = CRow + 1 End If Next 

因为这个

 CRow = 1 For Each cell In Range("G1:G" & lastrow) If Range("G" & CRow).Text = "TRUE" Then 

你正在分配1给CRow,并在每次迭代中使用它。 所以实际上你总是testingJust Row 1.把Range("G" & CRow).Text改为cell.Text

见下面的例子,使用反向循环删除同一组单元格,而不是select。 我相信我解释,从而改变,这一行正确的ActiveCell.Offset(2, 0).Select ,但让我知道,如果我错了,并没有按预期的function。

 Range("G1").FormulaR1C1 = _ "=IF(OR(ISNUMBER(SEARCH(""GS "",RC[-6])),ISNUMBER(SEARCH(""@"",RC[-6]))),""TRUE"",""FALSE"")" Range("G1").AutoFill Destination:=Range("G1:G" & lastrow) With Range("G1:G" & lastrow) .Value = .Value End With Dim T As Integer For T = 1 to lastrow Step -1 Set cell = Range("G" & T) If cell.Text = "TRUE" Then If cell.offset(0,-5) = "" Then cell.Offset(0,-5).Resize(,4).Delete Shift=xlUp Range("G" & T + 2).Insert Shift:=xlDown CopyOrigin:=xlFormatFromLeftOrAbove End If End If Next