根据活动单元格选择两列?

时间:2013-06-20 20:20:57

标签: excel vba excel-vba conditional-formatting

我正在尝试对2个组中的大范围列进行条件格式化。我不确定如何记录从活动单元格和其旁边的列中选择整个列的宏,然后应用条件格式化。然后向下移动两个细胞并重复。

这是我到目前为止所做的,但它会继续回到那些特定的细胞,我需要它向右移动2.

Sub findDups()
'
' findDups Macro

    ActiveCell.EntireColumn.Select

    Selection.FormatConditions.AddUniqueValues
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    Selection.FormatConditions(1).DupeUnique = xlDuplicate
    With Selection.FormatConditions(1).Font
        .Color = -16383844
        .TintAndShade = 0
    End With
    With Selection.FormatConditions(1).Interior
        .PatternColorIndex = xlAutomatic
        .Color = 13551615
        .TintAndShade = 0
    End With
    Selection.FormatConditions(1).StopIfTrue = False
    Range("M1").Select

    Worksheets("User Check List").Activate
    Selection.Offset(0, 2).Select
End Sub

1 个答案:

答案 0 :(得分:1)

这应该可以帮助您入门。我完全避免使用Selection,只使用ActiveCell作为了解开始宏的方法。优选地,您可以使用Application.InputBox执行此操作,但这不是什么大问题。

因为我不知道你想要循环多少次,所以我使用Do ... Loop语句,这将继续,直到列号> 26.您可以在Loop Until ...声明中更改它。

Sub findDups()
Dim startCell As Range
Dim formatCols As Range

Set startCell = ActiveCell

Do
    Set formatCols = startCell.Resize(1, 2).EntireColumn

    formatCols.FormatConditions.AddUniqueValues
    formatCols.FormatConditions(formatCols.FormatConditions.Count).SetFirstPriority
    formatCols.FormatConditions(1).DupeUnique = xlDuplicate
    With formatCols.FormatConditions(1).Font
        .Color = -16383844
        .TintAndShade = 0
    End With
    With formatCols.FormatConditions(1).Interior
        .PatternColorIndex = xlAutomatic
        .Color = 13551615
        .TintAndShade = 0
    End With

    Set startCell = startCell.Offset(0, 2)

Loop Until startCell.Column >= 26

End Sub

以下是输出格式的示例:

enter image description here