我有两个工作表,第一页和第二页。
在第1页上,我创建了一个表单,允许用户在单元格B21、B26、I21、I26、P21、P26中输入值。
然后单击submit,将数据插入到下一行A、B、C、D、E和F列的第2页。
我还试图创建一个宏,该宏一旦运行,将删除第2页上的行,其中的值与sheet1上的值匹配。
目前,我通过使用IF语句来保持简单,但是这给了我一个类型不匹配的错误。
Sub QuickCull()
If Sheets(1).Range("B21").Value = Sheets(2).Range("A:A").Value And _
Sheets(1).Range("B26").Value = Sheets(2).Range("B:B").Value And _
Sheets(1).Range("P21").Value = Sheets(2).Range("C:C").Value And _
Sheets(1).Range("I21").Value = Sheets(2).Range("D:D").Value And _
Sheets(1).Range("I26").Value = Sheets(2).Range("E:E").Value And _
Sheets(1).Range("P26").Value = Sheets(2).Range("F:F").Value Then
Rows(ActiveCell.Row).EntireRow.Delete
End If
End Sub有人能告诉我我哪里出了问题吗?
发布于 2016-12-31 12:19:14
首先,您需要查看第一个条件是否满足,因此我们将使用B21函数在Sheets(2)的整个列A中查找范围中的值(“Match”)。如果它返回一个成功的匹配,那么我们将使用该结果(RowMatch表示一个行号)。
其次,我们需要检查所有其他If在RowMatch中的Sheets(2)中是否有匹配的值。如果是这样的话,那么我们可以在Sheets(2)中删除该行。
试试下面的代码:
Option Explicit
Sub QuickCull()
Dim RowMatch As Long
With Sheets(2)
If Not IsError(Application.Match(Sheets(1).Range("B21").Value, .Range("A:A"), 0)) Then
RowMatch = Application.Match(Sheets(1).Range("B21").Value, .Range("A:A"), 0)
If Sheets(1).Range("B26").Value = .Range("B" & RowMatch).Value And _
Sheets(1).Range("P21").Value = .Range("C" & RowMatch).Value And _
Sheets(1).Range("I21").Value = .Range("D" & RowMatch).Value And _
Sheets(1).Range("I26").Value = .Range("E" & RowMatch).Value And _
Sheets(1).Range("P26").Value = .Range("F" & RowMatch).Value Then
.Rows(RowMatch).Delete
End If
End If
End With
End Subhttps://stackoverflow.com/questions/41408143
复制相似问题