Excel VBA. Преобразовать список ячеек в диапазоны - PullRequest
2 голосов
/ 13 февраля 2020

Я пытаюсь вернуть диапазоны ячеек с условным форматированием в виде строки. Мне удалось создать список ячеек с условным форматированием со следующим кодом.

    Set Data = ActiveSheet.UsedRange
    For Each Cell In Data
        If Cell.FormatConditions.Count > 0 Then
            If (Not ConditionallyFormattedCellsArray) = -1 Then: ReDim ConditionallyFormattedCellsArray(0)
            If (ConditionallyFormattedCellsArray(UBound(ConditionallyFormattedCellsArray)) <> "") Then: ReDim Preserve ConditionallyFormattedCellsArray(UBound(ConditionallyFormattedCellsArray) + 1)
            ConditionallyFormattedCellsArray(UBound(ConditionallyFormattedCellsArray)) = Cell.Address
        End If
    Next Cell

В моей ситуации может быть один или несколько различных диапазонов данных с условным форматированием, и я хотел бы сократить все эти отдельные ячейки до этих диапазонов.

Любые предложения приветствуются!

1 Ответ

1 голос
/ 13 февраля 2020

Вот краткий пример того, как добиться вашего результата, создав Union из всех ячеек, которые вы найдете в данном диапазоне, которые имеют условное форматирование.

Option Explicit

Sub Example()
    Dim cfCells As Range
    Dim checkCell As Range
    For Each checkCell In Sheet1.UsedRange
        If checkCell.FormatConditions.Count > 0 Then
            Debug.Print checkCell.Address
            If cfCells Is Nothing Then
                Set cfCells = checkCell
            Else
                Set cfCells = Union(cfCells, checkCell)
            End If
        End If
    Next checkCell

    Dim allCFCells As String
    If cfCells Is Nothing Then
        Debug.Print "no conditionally formatted cells found in range " & Sheet1.UsedRange.Address
    Else
        allCFCells = cfCells.Address
        Debug.Print "conditionally formatted cells: " & allCFCells
    End If
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...