VBA Ошибка времени выполнения '1004': Selection.Interior.Pattern

У меня есть следующий код, который должен просто изменить оформление именованного диапазона на основе наличия в нем значения. Если его пустое становится красным, и если оно не должно очищать все украшения. Я рассмотрел другие вопросы с похожими ошибками и не могу исправить свою проблему. У меня есть следующий код:

For Each section In mandatoryFields MsgBox (ThisWorkbook.Worksheets("Worksheet").Range(section).Value) If Trim(ThisWorkbook.Worksheets("Worksheet").Range(section).Value) = "" Then ThisWorkbook.Worksheets("Worksheet").Range(section).Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 255 .TintAndShade = 0 .PatternTintAndShade = 0 End With Else ThisWorkbook.Worksheets("Worksheet").Range(section).Select With Selection.Interior .Pattern = xlNone .TintAndShade = 0 .PatternTintAndShade = 0 End With End If Next section 

Я прошел через код, и ошибка времени выполнения запускается на

 .Pattern = xlNone 

или

 .Pattern = xlSolid 

линий. Какие-либо предложения?

Я также пробовал

 Worksheets("Worksheet").Activate Range(section).Select With Selection.Interior .Pattern = xlNone .TintAndShade = 0 .PatternTintAndShade = 0 End With 

У меня есть следующий код, который запускается при нажатии кнопки.

  Dim wb As Workbook Set wb = Application.Workbooks("C New Hire") wb.Worksheets("Worksheet").Range("nameRange").Value = "r" 

Ошибка во время выполнения произойдет во второй раз, когда я нажму кнопку на линии

 wb.Worksheets("Worksheet").Range("nameRange").Value = "r" 

Цветная часть кода верна, так как это работает:

 Sub luxation() Range("A1:A2").Clear Range("A1").Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 255 .TintAndShade = 0 .PatternTintAndShade = 0 End With Range("A2").Select With Selection.Interior .Pattern = xlNone .TintAndShade = 0 .PatternTintAndShade = 0 End With End Sub 

Однако:

Перед тем, как выбрать диапазон, вы должны активировать рабочий лист.

В противном случае, следуйте советам Дэвида.

EDIT # 1:

на основе вашего обновленного кода, сразу после:

 Range(section).Select 

вставить:

 MsgBox Selection.Address(0,0) 

Это проливает свет на то, где эта проблема происходит.

Ответ на эту проблему заключается в том, что после моего кода, который выполнял внутренний код, который защищал лист где-то в коде, была вызвана функция Worksheet_Change. Это означало, что я не могу выполнять какие-либо процедуры на каких-либо объектах, таких как изменение цвета. Поэтому перед выполнением этих процедур мне пришлось снять защиту листа.

Простое исправление в конце, но легко пропущено.

Давайте будем гением компьютера.