代码之家  ›  专栏  ›  技术社区  ›  Santhankrishnan Dhandapani

在Excel VBA中,为什么删除区域中的重复条目会删除单元格背景色?

  •  2
  • Santhankrishnan Dhandapani  · 技术社区  · 9 年前

    “我的工作表”的所有单元格均为灰色。我在列中选择一个范围并删除重复项。它会按预期删除重复项,但也会使重复单元格的颜色变为默认白色。我尝试了多个示例,但看起来它们是用默认的白色完成的,很可能这个问题永远不会发生。我可以通过编程将颜色设置回原来的颜色,但在知道为什么会这样做之前,我不想这样做。以下是我的代码

    LastRow = GetLastRow(SheetName, ConsolidatedColumn) 'ConsolidatedColumn is "P"
    WS.Range(ConsolidatedColumn & "1:" & ConsolidatedColumn & LastRow) _
        .RemoveDuplicates Columns:=Array(1), Header:=xlYes
    

    有人能解释为什么会这样吗?。

    1 回复  |  直到 9 年前
        1
  •  0
  •   user3598756    9 年前

    试试这个

    With Worksheets(SheetName).Range(ConsolidatedColumn & "1:" & ConsolidatedColumn & LastRow)
        .RemoveDuplicates Columns:=Array(1), Header:=xlYes
        .Resize(1, 1).Copy
        .PasteSpecial xlPasteFormats
    End With
    

    除此之外,我还添加了一些(可能)有用的关于 RemoveDuplicates() 方法

    似乎没有 删除(&D);转移 行,但仅 转移 他们 至少这是我通过以下测试得出的结论

    测试1:

    With Worksheets(SheetName).Range(ConsolidatedColumn & "1:" & ConsolidatedColumn & LastRow)
        MsgBox .Address
        .RemoveDuplicates Columns:=Array(1), Header:=xlYes
        MsgBox .Address
        .Resize(1, 1).Copy
        .PasteSpecial xlPasteFormats
    End With
    

    从这两个地址中获得相同的范围地址 MsgBox 声明

    最后两个语句将格式扩展到了整体 起初的 范围

    测试2:

    With Worksheets(SheetName).Range(ConsolidatedColumn & "1:" & ConsolidatedColumn & LastRow)
        MsgBox .Address
        .Rows(2).Delete
        MsgBox .Address
        .Resize(1, 1).Copy
        .PasteSpecial xlPasteFormats
    End With
    

    从这两个地址中获得不同的范围地址 消息框 语句,第二行比第一行短一行

    因此,最后两个语句没有将格式扩展到整体 起初的 范围