我正在尝试检查一对重复的行,然后突出显示其中一个。我在For Each循环中使用非常简单的If语句来执行此操作。如果是,则测试单元格A1中的文本(减去后4个字母)是否与单元格A2中的文本(减去后4个字母)匹配。但是由于某种原因,这个If总是向我抛出Type Mismatch错误。救命!
我尝试使用MsgBox在If语句中显示等号两侧的内容。它将等号的左侧显示得很好,但是等号的右侧将引发Type Mismatch错误。因此,问题必须出在If语句的右侧(我正在使用Offset。)。
Sub highlight_dupes()
Dim mycell As Variant
For Each mycell In Range("A:A")
If mycell = "" Then Exit Sub
'check for dupes
If Left(mycell, Len(mycell) - 4) = Left(mycell.Offset(1, 0), Len((mycell.Offset(1, 0)) - 4)) Then
'highlight dupes
Rows(mycell.Row).Interior.Color = vbRed
End If
End Sub
答案 0 :(得分:1)
括号太多...在给定的情况下,您试图在计算长度之前从单元格中减去4,从而导致不匹配。
If Left(mycell, Len(mycell) - 4) = Left(mycell.Offset(1, 0), Len((mycell.Offset(1, 0)) - 4)) Then
应该是...
If Left(mycell, Len(mycell) - 4) = Left(mycell.Offset(1, 0), Len(mycell.Offset(1, 0)) - 4) Then