Страницы: 1
RSS
Удаление УФ макросом, макрос удаляет только половину правил УФ и вылетает с ошибкой
 
Для помощи в этой теме написал такой макрос:
Код
Sub fmtCDDEL()
Dim fmtCD As FormatCondition
On Error GoTo Err
With Application
    .Calculation = xlCalculationManual
    .ScreenUpdating = False
End With
With Cells.FormatConditions
Ans = MsgBox("В Вашем файле " & .Count & " правил условного форматирования!" & Chr(13) & "Удалить их?", vbInformation + vbYesNo)
If Ans = vbNo Then Exit Sub
I = 1
Do While .Count <> 0
    Cells.FormatConditions(I).Delete
    Application.StatusBar = "Удаляется " & I & " правило. Пожалуйста подождите...."
    DoEvents
    I = I + 1
Loop
End With
Err:
With Application
If Cells.FormatConditions.Count <> 0 Then
        .StatusBar = "Не удалено " & Cells.FormatConditions.Count & ", запустите макрос еще раз..."
    Else
        .StatusBar = False
    End If
    .Calculation = xlCalculationAutomatic
    .ScreenUpdating = True
End With
End Sub
но без обработчика ошибок он удаляет РОВНО половину правил УФ и вылетает с ошибкой Subscript out of range. Приходится повторно его запускать, НО опять до удаления половины оставшихся правил УФ. И так пока все не удаляться. В чем причина? Файл не прикладываю - больно тяжел. Можно взять по ссылке в первом посте
Согласие есть продукт при полном непротивлении сторон
 
Код
I = 1
Do While .Count <> 0
    Cells.FormatConditions(I).Delete
    Application.StatusBar = "Удаляется " & I & " правило. Пожалуйста подождите...."
    DoEvents
    I = I + 1
Loop


удалили i-ое правило, все остальные съехали на освободившееся место?
м.б. так?
Код
For i=.Count to 1 step -1
    Cells.FormatConditions(I).Delete
    Application.StatusBar = "Удаляется " & I & " правило. Пожалуйста подождите...."
    DoEvents
Next

ну и уточнить - с нуля они там нумеруются или с единицы...
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Да, спасибо, заработало
Согласие есть продукт при полном непротивлении сторон
 
А почему не сразу все?
Код
cells.FormatConditions.Delete
 
 
Цитата
Казанский пишет:
А почему не сразу все?
Спасибо! Но мы не ищем легких путей   :)  ! Вот торможу-то!
Изменено: Sanja - 13.02.2014 13:33:27
Согласие есть продукт при полном непротивлении сторон
Страницы: 1
Наверх