Vba 删除与我想要的相反的内容

Vba 删除与我想要的相反的内容,vba,excel,Vba,Excel,我不知道我错在哪里。如果这两个都是真的,我希望这段代码什么都不做。如果颜色为真,我希望它删除该行。请告诉我怎么了 For lngRow = lngRows To 2 Step -1 If ActiveWorkbook.Worksheets("Sheet1").Cells(lngRow, "E").DisplayFormat.Interior.ColorIndex = 38 _ And InStr(1, Range("N" & lngRow), LCase("po

我不知道我错在哪里。如果这两个都是真的,我希望这段代码什么都不做。如果颜色为真,我希望它删除该行。请告诉我怎么了

For lngRow = lngRows To 2 Step -1
    If ActiveWorkbook.Worksheets("Sheet1").Cells(lngRow, "E").DisplayFormat.Interior.ColorIndex = 38 _
        And InStr(1, Range("N" & lngRow), LCase("po box") > 0) Then
    Else:
        ActiveWorkbook.Worksheets("Sheet1").Rows(lngRow).EntireRow.Delete
    End If


Next
我觉得我需要另一个If语句还是什么?我试过很多不同的版本,但我都没有。提前谢谢你的帮助

我加了这张照片。如果这能更好地解释的话。我只需要用邮政信箱着色的行。还有那些根本没有着色的行,它们中的大多数都没有被描绘出来。(这都是假的信息)


在我看来,这可能是
指令的括号位置。也许它应该是
InStr(1,范围(“N”)和lngRow),LCase(“邮箱”)>0
? 如果不是,我建议使用

If Not (ActiveWorkbook.Worksheets("Sheet1").Cells(lngRow, "E").DisplayFormat.Interior.ColorIndex = 38 & _
    And InStr(1, Range("N" & lngRow), LCase("po box")) > 0) Then 'check your parenthesis here
    ActiveWorkbook.Worksheets("Sheet1").Rows(lngRow).EntireRow.Delete
End If

在我看来,这可能是
Instr
的括号位置。也许它应该是
InStr(1,范围(“N”)和lngRow),LCase(“邮箱”)>0
? 如果不是,我建议使用

If Not (ActiveWorkbook.Worksheets("Sheet1").Cells(lngRow, "E").DisplayFormat.Interior.ColorIndex = 38 & _
    And InStr(1, Range("N" & lngRow), LCase("po box")) > 0) Then 'check your parenthesis here
    ActiveWorkbook.Worksheets("Sheet1").Rows(lngRow).EntireRow.Delete
End If

要仅删除带颜色但不包含“邮政信箱”的行,请使用


注意:在一个不全是小写的字符串中搜索
LCase
版本的“po-box”(已经全部是小写)也会给您带来问题。您应该在单元格的
LCase
版本中检查“邮政信箱”。

若要仅删除有颜色但不包含“邮政信箱”的行,请使用


注意:在一个不全是小写的字符串中搜索
LCase
版本的“po-box”(已经全部是小写)也会给您带来问题。您应该在单元格的
LCase
版本中检查“po-box”。

我认为两列。自动筛选更合适

Dim lngRows  As Long
lngRows = 6

With Worksheets("sheet4")
    If .AutoFilterMode Then .AutoFilterMode = False
    With .Range("E1:N" & lngRows)
        .AutoFilter Field:=1, Criteria1:=RGB(255, 153, 204), Operator:=xlFilterCellColor
        .AutoFilter Field:=10, Criteria1:="<>*po box*"
        With .Resize(.Rows.Count - 1, .Columns.Count).Offset(1, 0)
            If CBool(.Application.Subtotal(103, .Cells)) Then
                .SpecialCells(xlCellTypeVisible).EntireRow.Delete
            End If
        End With
    End With
    If .AutoFilterMode Then .AutoFilterMode = False
End With
Dim lng的长度与
Ln=6
带工作表(“表4”)
如果.AutoFilterMode,则.AutoFilterMode=False
带.Range(“E1:N”和lng)
.AutoFilter字段:=1,准则1:=RGB(255、153、204),运算符:=xlFilterCellColor
.自动筛选字段:=10,标准1:=“*采购订单箱*”
使用.Resize(.Rows.Count-1、.Columns.Count).Offset(1,0)
如果是CBool(.Application.Subtotal(103.Cells)),则
.SpecialCells(xlCellTypeVisible).EntireRow.Delete
如果结束
以
以
如果.AutoFilterMode,则.AutoFilterMode=False
以

我认为两列自动筛选更合适

Dim lngRows  As Long
lngRows = 6

With Worksheets("sheet4")
    If .AutoFilterMode Then .AutoFilterMode = False
    With .Range("E1:N" & lngRows)
        .AutoFilter Field:=1, Criteria1:=RGB(255, 153, 204), Operator:=xlFilterCellColor
        .AutoFilter Field:=10, Criteria1:="<>*po box*"
        With .Resize(.Rows.Count - 1, .Columns.Count).Offset(1, 0)
            If CBool(.Application.Subtotal(103, .Cells)) Then
                .SpecialCells(xlCellTypeVisible).EntireRow.Delete
            End If
        End With
    End With
    If .AutoFilterMode Then .AutoFilterMode = False
End With
Dim lng的长度与
Ln=6
带工作表(“表4”)
如果.AutoFilterMode,则.AutoFilterMode=False
带.Range(“E1:N”和lng)
.AutoFilter字段:=1,准则1:=RGB(255、153、204),运算符:=xlFilterCellColor
.自动筛选字段:=10,标准1:=“*采购订单箱*”
使用.Resize(.Rows.Count-1、.Columns.Count).Offset(1,0)
如果是CBool(.Application.Subtotal(103.Cells)),则
.SpecialCells(xlCellTypeVisible).EntireRow.Delete
如果结束
以
以
如果.AutoFilterMode,则.AutoFilterMode=False
以

和InStr(1,Range(“N”和lngRow),LCase(“po-box”)>0
应该是
和InStr(1,Range(“N”和lngRow),LCase(“po-box”)>0
你在问题中说,如果两者都是
真的话,你希望它什么都不做,但是对答案的一个注释(“我只需要在颜色为真但po-box不存在的情况下删除它。”)当一个为
True
而另一个为
False
时,使其听起来像是您实际希望它做某事。请澄清。编辑后,听起来您想删除带颜色但不包含“采购订单箱”的行。是吗?是的,也许我没有解释清楚。这两样东西我都需要。我在我的问题中添加了一幅图片,可以更好地解释它。它应该将带有PO Box的行保留在D列,并保留其他未着色的行。它应该只删除有颜色且其中没有邮政信箱的行。是的。有颜色但没有邮政信箱的行需要删除:)
和InStr(1,范围(“N”)和lngRow),LCase(“邮政信箱”)>0
应该是
和InStr(1,范围(“N”)和lngRow),LCase(“邮政信箱”))>0
您在问题中说,如果两者都
为真,您希望它什么也不做,但是对答案的注释(“只有当颜色为真,但邮箱不存在时,我才需要删除它。”)当一个为
True
而另一个为
False
时,使其听起来像是您确实希望它执行某些操作。请澄清。编辑后,听起来像是您要删除带颜色但不包含“po”框的行“.是吗?是的,也许我没有解释清楚。这两样东西我都需要。我在我的问题中添加了一幅图片,可以更好地解释它。它应该将带有PO Box的行保留在D列,并保留其他未着色的行。它应该只删除有颜色和颜色的行“我没有邮箱,是的。你不想要
&
,否则它会创建一个字符串
TRUETRUE
,只是
@ScottCraner你的意思是&在范围内吗?不,在你的第一行末尾,如果你有
&
删除
&
@victorK啊,是的,我想他把它放进去了。另外,维克多,如果你看到这个,我喜欢它的工作原理,我想,但我也需要它不要删除,如果两者都不是真的。我需要它删除只有当颜色是真的,但邮政信箱不存在。我认为代码也会删除所有不带颜色的内容。你不想要
&
或者它会创建一个字符串
TRUETRUE
只是
@ScottCraner你是说&在范围内吗?不,在你的第一行末尾,如果你有
&
移除
&
@victorK啊,是的,我想他把它放进去了。另外,维克多,如果你看到这个,我喜欢它的工作原理,我想,但我也需要它不要删除,如果两者都不是真的。我只需要删除它