Добрый день. Подскажите ответ - на непростую задачу.
Есть макрос очистки условного формата (с сохранением цвета ячейки) и замена формул на значения. Для этого нужно выделить диапазон ячеек и нажать на кнопку. Если цвет условного форматирования - синий, то макрос удалит условный формат - и присвоит тот же самый, синий цвет - самой ячейке.
Однако он работает, только если цвет условного формата - однотонный. Если же цвет заливки - сложный (одна часть синяя, градиентно переходящая в белый цвет - к центру) - то такой формат нынешний макрос присвоить ячейке уже не сможет.
Как заставить макрос - работать не только на очистку Однотонного УФ, а еще и на очистку Сложного УФ - с сохранением заливки ?
Добрый день. Подскажите ответ - на непростую задачу.
Есть макрос очистки условного формата (с сохранением цвета ячейки) и замена формул на значения. Для этого нужно выделить диапазон ячеек и нажать на кнопку. Если цвет условного форматирования - синий, то макрос удалит условный формат - и присвоит тот же самый, синий цвет - самой ячейке.
Однако он работает, только если цвет условного формата - однотонный. Если же цвет заливки - сложный (одна часть синяя, градиентно переходящая в белый цвет - к центру) - то такой формат нынешний макрос присвоить ячейке уже не сможет.
Как заставить макрос - работать не только на очистку Однотонного УФ, а еще и на очистку Сложного УФ - с сохранением заливки ?RipVanWinkel
1)Выделил однотонные ячейки A10, A11. Нажал на кнопку - условные форматы никуда не исчезли. И формулы - на значения не заменились. Кроме того - цвета ячейкам не присвоились.
2)Выделил ячейки C10, C11 (со сложной заливкой). Нажал на кнопку - условные форматы также никуда не исчезли. Формулы на значения - также не заменились.
Karataev, не работает.
1)Выделил однотонные ячейки A10, A11. Нажал на кнопку - условные форматы никуда не исчезли. И формулы - на значения не заменились. Кроме того - цвета ячейкам не присвоились.
2)Выделил ячейки C10, C11 (со сложной заливкой). Нажал на кнопку - условные форматы также никуда не исчезли. Формулы на значения - также не заменились.RipVanWinkel
Karataev, если выделить однотонные ячейки A10, A11 и запустить макрос - то он сделает эти ячейки - белыми.
Суть в том, чтобы в ячейках A10, A11 - была заливка - такого же цвета, какая была в их окраске условного форматирования на тот момент - когда был запущен макрос. То есть по логике - в ячейке A10 - должен быть синий цвет, а в ячейке A11 - зеленый цвет.
Karataev, если выделить однотонные ячейки A10, A11 и запустить макрос - то он сделает эти ячейки - белыми.
Суть в том, чтобы в ячейках A10, A11 - была заливка - такого же цвета, какая была в их окраске условного форматирования на тот момент - когда был запущен макрос. То есть по логике - в ячейке A10 - должен быть синий цвет, а в ячейке A11 - зеленый цвет.RipVanWinkel
Dim cell As Range, FC As FormatCondition, CStop As ColorStop Dim ac As Long, i As Long
If MsgBox("Форматы не входящие в стандартные (гистограммы и значки), будут утеряны! Продолжить?", _ vbExclamation + vbYesNo) <> vbYes Then Exit Sub
With Application: .ScreenUpdating = False: .DisplayAlerts = False: .EnableEvents = False: ac = .Calculation: .Calculation = -4135: End With
For Each cell In Selection.Cells If cell.FormatConditions.Count <> 0 Then Set FC = cell.FormatConditions(1) If IsNull(FC.Interior.Pattern) Then cell.Interior.Color = FC.Interior.Color ElseIf FC.Interior.Pattern = xlPatternRectangularGradient Then cell.Interior.Pattern = xlPatternRectangularGradient cell.Interior.Gradient.RectangleLeft = FC.Interior.Gradient.RectangleLeft cell.Interior.Gradient.RectangleRight = FC.Interior.Gradient.RectangleRight cell.Interior.Gradient.RectangleTop = FC.Interior.Gradient.RectangleTop cell.Interior.Gradient.RectangleBottom = FC.Interior.Gradient.RectangleBottom cell.Interior.Gradient.ColorStops.Clear For i = 1 To FC.Interior.Gradient.ColorStops.Count Set CStop = cell.Interior.Gradient.ColorStops.Add(i - 1) CStop.Color = FC.Interior.Gradient.ColorStops(i).Color CStop.TintAndShade = FC.Interior.Gradient.ColorStops(i).TintAndShade Next i End If cell.FormatConditions.Delete End If Next cell
For Each cell In Selection.Cells cell.Value = cell.Value Next cell
With Application: .ScreenUpdating = True: .DisplayAlerts = True: .EnableEvents = True: .Calculation = ac: End With
End Sub
[/vba]
[vba]
Код
Sub Макрос3()
Dim cell As Range, FC As FormatCondition, CStop As ColorStop Dim ac As Long, i As Long
If MsgBox("Форматы не входящие в стандартные (гистограммы и значки), будут утеряны! Продолжить?", _ vbExclamation + vbYesNo) <> vbYes Then Exit Sub
With Application: .ScreenUpdating = False: .DisplayAlerts = False: .EnableEvents = False: ac = .Calculation: .Calculation = -4135: End With
For Each cell In Selection.Cells If cell.FormatConditions.Count <> 0 Then Set FC = cell.FormatConditions(1) If IsNull(FC.Interior.Pattern) Then cell.Interior.Color = FC.Interior.Color ElseIf FC.Interior.Pattern = xlPatternRectangularGradient Then cell.Interior.Pattern = xlPatternRectangularGradient cell.Interior.Gradient.RectangleLeft = FC.Interior.Gradient.RectangleLeft cell.Interior.Gradient.RectangleRight = FC.Interior.Gradient.RectangleRight cell.Interior.Gradient.RectangleTop = FC.Interior.Gradient.RectangleTop cell.Interior.Gradient.RectangleBottom = FC.Interior.Gradient.RectangleBottom cell.Interior.Gradient.ColorStops.Clear For i = 1 To FC.Interior.Gradient.ColorStops.Count Set CStop = cell.Interior.Gradient.ColorStops.Add(i - 1) CStop.Color = FC.Interior.Gradient.ColorStops(i).Color CStop.TintAndShade = FC.Interior.Gradient.ColorStops(i).TintAndShade Next i End If cell.FormatConditions.Delete End If Next cell
For Each cell In Selection.Cells cell.Value = cell.Value Next cell
With Application: .ScreenUpdating = True: .DisplayAlerts = True: .EnableEvents = True: .Calculation = ac: End With