在 Excel VBA 中,为什么删除范围内的重复条目会删除单元格背景颜色?
In Excel VBA, why removing duplicate entries in a range removes the cell background color?
我的工作表的所有单元格都是灰色的。我在列中选择一个范围并删除重复项。它会按预期删除重复项,但也会将重复单元格的颜色设置为其默认的白色。我尝试了多个示例,但看起来它们是用默认的白色完成的,而且这个问题可能永远不会发生。我可以通过编程将颜色设置回原来的颜色,但在知道为什么会这样之前我不想这样做。以下是我的代码
LastRow = GetLastRow(SheetName, ConsolidatedColumn) 'ConsolidatedColumn is "P"
WS.Range(ConsolidatedColumn & "1:" & ConsolidatedColumn & LastRow) _
.RemoveDuplicates Columns:=Array(1), Header:=xlYes
有人可以解释为什么会这样吗?
试试这个
With Worksheets(SheetName).Range(ConsolidatedColumn & "1:" & ConsolidatedColumn & LastRow)
.RemoveDuplicates Columns:=Array(1), Header:=xlYes
.Resize(1, 1).Copy
.PasteSpecial xlPasteFormats
End With
除此之外,我添加了一些(可能)有用的关于 RemoveDuplicates()
方法
功能的旁注
它似乎没有 delete&shift 行,只是 shift 它们
至少这是我通过以下测试得出的结论
测试 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
你从两个 MsgBox
语句中得到不同的范围地址,第二个比第一个短一行
因此,最后两个语句不会将格式扩展到整个 原始 范围
我的工作表的所有单元格都是灰色的。我在列中选择一个范围并删除重复项。它会按预期删除重复项,但也会将重复单元格的颜色设置为其默认的白色。我尝试了多个示例,但看起来它们是用默认的白色完成的,而且这个问题可能永远不会发生。我可以通过编程将颜色设置回原来的颜色,但在知道为什么会这样之前我不想这样做。以下是我的代码
LastRow = GetLastRow(SheetName, ConsolidatedColumn) 'ConsolidatedColumn is "P"
WS.Range(ConsolidatedColumn & "1:" & ConsolidatedColumn & LastRow) _
.RemoveDuplicates Columns:=Array(1), Header:=xlYes
有人可以解释为什么会这样吗?
试试这个
With Worksheets(SheetName).Range(ConsolidatedColumn & "1:" & ConsolidatedColumn & LastRow)
.RemoveDuplicates Columns:=Array(1), Header:=xlYes
.Resize(1, 1).Copy
.PasteSpecial xlPasteFormats
End With
除此之外,我添加了一些(可能)有用的关于 RemoveDuplicates()
方法
它似乎没有 delete&shift 行,只是 shift 它们 至少这是我通过以下测试得出的结论
测试 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
你从两个 MsgBox
语句中得到不同的范围地址,第二个比第一个短一行
因此,最后两个语句不会将格式扩展到整个 原始 范围