Я искал сайт по этому вопросу, и, хотя один вопрос был задан об этом, ответы были неудовлетворительными для меня, так как проблема, о которой сообщал ОП, не была непосредственно обращается. Вместо этого были предложены обходные пути, которые избежали проблемы, а не объясняли, почему код не будет работать.Проблема с использованием записанного макроса, который содержит инструкции для условного форматирования
Итак, здесь я пробую свою версию.
У меня есть таблица, в которой уже есть определенные условные форматы. В частности, для столбцов U и V применяются два условных формата. Теперь я хочу применить новый условный формат ко всему соответствующему диапазону данных, и это включает в себя то, что находится в столбцах U и V.
Я записал следующий макрос, который работал нормально во время его записи. Однако запуск макроса сам по себе вызывает ошибку. Это макрос в вопрос:
Sub Macro13()
'
' Macro13 Macro
'
'
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$C1<>$C2"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Borders(xlBottom)
.LineStyle = xlContinuous
.TintAndShade = 0
.Weight = xlThin
End With
Selection.FormatConditions(1).StopIfTrue = False
End Sub
макросъемки дословно, то есть, это именно так, как Excel производится его.
Ошибка «Невозможно установить свойство LineStyle класса Border» встречается в строке .LineStyle = xlContinuous.
Может кто-нибудь помочь мне понять, почему это работает, когда я записываю его, но не когда я его запускаю? Как я могу изменить его так, чтобы он работал правильно?
Я использую Excel 2007 на компьютере под управлением Windows 7 Professional.
UPDATE Если я вставить строку «Selection.FormatConditions.Delete» в коде, например так:
Sub Macro13()
'
' Macro13 Macro
'
'
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.FormatConditions.Delete <-----------Added here
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$C1<>$C2"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Borders(xlBottom)
.LineStyle = xlContinuous
.TintAndShade = 0
.Weight = xlThin
End With
Selection.FormatConditions(1).StopIfTrue = False
End Sub
то код работает без ошибок и производит подчеркивание я хочу, но это также удаляет предыдущее условное форматирование столбцов U и V, делая изменение бесполезным.
Попробуйте удалить три строки, которые начинаются с '.', поскольку это настройки по умолчанию? – CJC
Я не могу заставить его выбросить ошибку. Он работает для меня даже при существующем форматировании. –
Я не могу получить сообщение об ошибке при запуске этого кода; однако у меня есть мысль, почему это может не сработать ... при нажатии F8 (в VBA) каждая часть кода будет выполняться индивидуально. Вы видите, что что-то происходит непосредственно перед ошибкой, которая может сбросить ориентацию «выбора»? Что такое ошибка, которая появляется? – Cyril