如何修复每个 If 语句中的"Type Mismatch"错误?



我正在尝试检查一对重复的行,然后突出显示其中一行。我正在使用 For Each 循环中非常简单的 If 语句来执行此操作。If 测试单元格 A1 中的文本(减去最后 4 个字母(是否与单元格 A2 中的文本(减去最后 4 个字母(匹配。但是由于某种原因,这If 不断给我抛出类型不匹配错误。帮助!

我尝试使用 MsgBox 在 If 语句中显示等号两侧的内容。它很好地显示等号的左侧,但为等号的右侧引发类型不匹配错误。所以问题必须出在 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

括号太多...在给定的情况下,您尝试在计算长度之前从单元格中减去 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

相关内容

最新更新