首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查列中的副本并突出显示

检查列中的副本并突出显示
EN

Stack Overflow用户
提问于 2020-01-16 06:52:55
回答 1查看 193关注 0票数 0

我需要检查column B中的副本,我编写了下面的代码,看起来不错,但是我得到的是Run time Error 13 type-mismatch,请帮助。我为什么要得到它?

代码语言:javascript
复制
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

更新:获取更多信息,请按查询

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-16 07:13:21

你不需要VBA来给复印机上颜色。只需使用条件格式:

但是,出于您的兴趣,导致代码中错误的原因是,如果您循环

代码语言:javascript
复制
For Each myCell In myRange

实际上,您不遍历myRange中的单元格,而是循环myRange的列(只有一个列B)。如果要循环遍历myRange的单元格,则需要将其更改为

代码语言:javascript
复制
For Each myCell In myRange.Cells

否则,myCell.Value是B列值的数组,因此WorksheetFunction.CountIf(myRange, myCell.Value)失败。

如果您真的必须使用VBA,我强烈建议使用VBA创建条件格式,而不是使用代码。这会快得多,您的代码是非常慢的

代码语言:javascript
复制
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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59764381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档