VBA使用列中的格式查找并替换工作表中找到的所有单元格

时间:2014-04-02 17:32:16

标签: excel excel-vba vba

我正在寻找一个vba代码片段来帮助我入门。

我的一个工作表中有一列有值(非唯一)。从这一栏我需要

  1. 使用原始单元格中的格式替换整个工作簿中具有相同值的所有找到的单元格,或者

  2. 如果单元格没有背景颜色,则为其指定新的唯一颜色背景(唯一基于列中的先前单元格),并使用此格式查找并替换整个工作簿中的所有单元格。

  3. 我不相信我可以使用条件格式化,因为我有太多符合标准的单元格,并且它会降低速度,降低到不可接受的速度。

1 个答案:

答案 0 :(得分:0)

好的,基于之前的评论,这是我到目前为止所做的。

Sub FormatFill()
Dim sRng As Range
Dim cCell As Range
Dim nCell As Range
Dim bClr, lVal
     Application.ScreenUpdating = False
     Range("B1").Select
     Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
     Set sRng = Selection
     'Fill all legend formats
     Range("A1").Select
     Range(Selection, Selection.End(xlDown)).Select
     For Each cell In Selection
         lVal = cell.Value
         bClr = cell.Interior.Color
         Set cCell = sRng.Find(What:=lVal, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, _
         SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
         If Not cCell Is Nothing Then
             Set nCell = cCell
                 Do
                      cCell.Interior.Color = bClr
                      Set cCell = sRng.FindNext(After:=cCell)
                      If Not cCell Is Nothing Then
                            If cCell.Address = nCell.Address Then Exit Do
                      Else
                            Exit Do
                      End If
                 Loop
        End If
    Next
Application.ScreenUpdating = True
End Sub

我仍在研究如何捕获并为工作簿的其余部分分配其他值的唯一颜色。