1 (изменено: inseption86, 2018-07-01 15:07:10)

Тема: AHK: FormatConditions.Delete c сохранением цвета ячейки

Добрый день, подскажите пож-та возможно ли удалить УФ, но сохранить цветовые параметры?


path =* .xlsx
Xl := ComObjCreate("Excel.Application")
Xl.Workbooks.Open(Path)
Xl.Visible := true

xl.Worksheets(1).Range("A1:A10").FormatConditions.Delete

2

Re: AHK: FormatConditions.Delete c сохранением цвета ячейки

inseption86, Вы имеете в виду — определить текущее цветовое оформление ячейки в зависимости от условного форматирования, затем удалить условное форматирование, затем напрямую задать то же самое цветовое оформление ячейке принудительно, так?

3 (изменено: inseption86, 2018-07-01 17:23:04)

Re: AHK: FormatConditions.Delete c сохранением цвета ячейки

alexii ДА,

4 (изменено: alexii, 2018-07-01 18:30:00)

Re: AHK: FormatConditions.Delete c сохранением цвета ячейки

inseption86, какая у Вас версия Microsoft Office?

5

Re: AHK: FormatConditions.Delete c сохранением цвета ячейки

alexii 2010 и 2013

6 (изменено: alexii, 2018-07-01 19:00:43)

Re: AHK: FormatConditions.Delete c сохранением цвета ячейки

inseption86, тогда попробуйте поиграться со свойством ячеек .DisplayFormat для определения текущего состояния с учётом условного форматирования, вроде бы оно должно подходить для сего судя по описанию. Мне играться не на чем — не та версия.

7

Re: AHK: FormatConditions.Delete c сохранением цвета ячейки

Спасибо, нашёл рабочий vba, попробую его переделать

Option Explicit

Sub NonConditionalFormatting()
' Slightly modified version of http://www.experts-exchange.com/Software/Office_Productivity/Office_Suites/MS_Office/Excel/Q_24179503.html
Dim cel As Range
Dim boo As Boolean
Dim frmla As String
Dim i As Long
Dim v As Variant
Dim w As Variant
Application.ScreenUpdating = False
'For Each cel In ActiveSheet.UsedRange  'Remove conditional formatting from entire worksheet
For Each cel In Selection   'Remove conditional formatting from selected cells
    If cel.FormatConditions.Count > 0 Then
        cel.Activate
        With cel.FormatConditions
            For i = 1 To .Count
                frmla = .Item(i).Formula1
                frmla = UnlocaleFormula(frmla)
                If Left(frmla, 1) = "=" Then
                    v = Application.Evaluate(frmla)
                    On Error Resume Next
                        w = v
                        w = v(1)
                    On Error GoTo 0
                    boo = IIf(IsError(w), False, CBool(w))
                Else
                    Select Case .Item(i).Operator
                    Case xlEqual  ' =
                        frmla = cel & "=" & .Item(i).Formula1
                    Case xlNotEqual
                        frmla = cel & "<>" & .Item(i).Formula1
                    Case xlBetween
                        frmla = "AND(" & .Item(i).Formula1 & "<=" & cel & "," & cel & "<=" & .Item(i).Formula2 & ")"
                    Case xlNotBetween
                        frmla = "OR(" & .Item(i).Formula1 & ">" & cel & "," & cel & ">" & .Item(i).Formula2 & ")"
                    Case xlLess
                        frmla = cel & "<" & .Item(i).Formula1
                    Case xlLessEqual
                        frmla = cel & "<=" & .Item(i).Formula1
                    Case xlGreater
                        frmla = cel & ">" & .Item(i).Formula1
                    Case xlGreaterEqual
                        frmla = cel & ">=" & .Item(i).Formula1
                    End Select
                    boo = Application.Evaluate(frmla)
                End If
                If boo Then
                    cel.Font.ColorIndex = .Item(i).Font.ColorIndex
                    cel.Interior.ColorIndex = .Item(i).Interior.ColorIndex
                    Exit For
                End If
            Next i
            .Delete
        End With
    End If
Next cel
Application.ScreenUpdating = True
End Sub
                    
Public Function UnlocaleFormula(ByVal Formula As String) As String
    With ThisWorkbook.Worksheets(1).Range("IU1")
        .FormulaLocal = Formula
        UnlocaleFormula = .Formula
        .ClearContents
    End With
End Function

8

Re: AHK: FormatConditions.Delete c сохранением цвета ячейки

Надстройка Asup utilities - формат -заменить в выделении условное форматирование на статическое.