我需要检查column B中的副本,我编写了下面的代码,看起来不错,但是我得到的是Run time Error 13 type-mismatch,请帮助。我为什么要得到它?
Sub duplicate()
Dim myRange As Range
Dim myCell As Range
Set myRange = Columns("B:B")
For Each myCell In myRange
If WorksheetFunction.CountIf(myRange, myCell.Value) > 1 Then ' Run-time error 13 Type mismatch
myCell.Interior.ColorIndex = 3
End If
Next myCell
End Sub更新:获取更多信息,请按查询
发布于 2020-01-16 07:13:21
你不需要VBA来给复印机上颜色。只需使用条件格式:

但是,出于您的兴趣,导致代码中错误的原因是,如果您循环
For Each myCell In myRange实际上,您不遍历myRange中的单元格,而是循环myRange的列(只有一个列B)。如果要循环遍历myRange的单元格,则需要将其更改为
For Each myCell In myRange.Cells否则,myCell.Value是B列值的数组,因此WorksheetFunction.CountIf(myRange, myCell.Value)失败。
如果您真的必须使用VBA,我强烈建议使用VBA创建条件格式,而不是使用代码。这会快得多,您的代码是非常慢的。
Option Explicit
Public Sub CreateRuleForDuplicates()
Dim MyRange As Range
Set MyRange = Columns("B:B")
With MyRange
.FormatConditions.AddUniqueValues
.FormatConditions(.FormatConditions.Count).SetFirstPriority
.FormatConditions(1).DupeUnique = xlDuplicate
.FormatConditions(1).Interior.ColorIndex = 3
.FormatConditions(1).StopIfTrue = False
End With
End Sub注意,如果您多次运行代码,它每次都会添加一个新的规则。因此,在添加一个新的.FormatConditions.Delete之前,您可能希望删除该范围内的所有旧规则.AddUniqueValues。
https://stackoverflow.com/questions/59764381
复制相似问题