Есть макрос(ниже), ошибка возникает в строке то ли следующей после строки с Do, то ли через одну от нее. Код ошибки: run-time error 1004. Смысл в том чтоб пробегать столбец С, и проверять столбец А, на соответствие значению в столбце С, если есть совпадения красим, если нет бежим дальше. Имя специально не менял ибо название в дальнейшем будет "Страшное".
Код
Sub Макрос6()
'
' Макрос6 Макрос
' stop
'
' Сочетание клавиш: Ctrl+t
'
i = 1
Range(Selection, Selection.End(xlDown)).Select
Do While i <= 100
Selection.FormatConditions.Add Type:=xlTextString, String:="=$C$i", _
TextOperator:=xlContains
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Font
.Color = -16383844
.TintAndShade = 0
End With
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 13551615
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Loop
End Sub
decha, скрипт делает несколько иное от того что вы описали, а именно он не красит при условии, а для выделенной области настраивает условное форматирование, при этом делает это не совсем эффективно , так как создает для каждой ячейки собственное правило, вместо одного правила для области/областей. 1. вы уверены, что вам надо именно то что вы нам показали? 1. Пример файла приложите.
Да, я не совсем правильно объяснил, Макрос я записывал. По сути есть колонка с фразами и колонка со словами, надо покрасить в первой колонке все фразы, в которых есть хотя бы одно слово из второй. вот файл. Пытался засунуть все в цикл, чтоб проходить отдельно для каждой строки из столбца, но наткнулся на ошибку, VB- это вам не C++, как говорится.
Sub СТРАШНОЕ()
Dim Cl As Range
lRow = Cells(Rows.Count, 3).End(xlUp).Row
For Each Cl In Range("C1:C" & lRow).Cells
If Cl.Offset(, -2) Like "*" & Cl & "*" Then
Cl.Font.Color = -16383844
Cl.Interior.Color = 13551615
End If
Next
End Sub
Sub СТРАШНОЕ()
Dim arrA, arrC
Dim I&, J&
arrA = Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row).Value
arrC = Range("C1:C" & Cells(Rows.Count, 3).End(xlUp).Row).Value
For I = 1 To UBound(arrA)
For J = 1 To UBound(arrC)
If arrA(I, 1) Like "*" & arrC(J, 1) & "*" Then
With Cells(I, 1)
.Font.Color = -16383844
.Interior.Color = 13551615
End With
End If
Next
Next
End Sub
Sub СТРАШНОЕ()
Dim arrA, arrC
Dim I&, J&
Dim colRange As Range
arrA = Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row).Value
arrC = Range("C1:C" & Cells(Rows.Count, 3).End(xlUp).Row).Value
With CreateObject("Scripting.Dictionary")
For I = 1 To UBound(arrA)
For J = 1 To UBound(arrC)
If arrA(I, 1) Like "*" & arrC(J, 1) & "*" Then
tempVal = .Item(I)
If Not colRange Is Nothing Then
Set colRange = Union(colRange, Cells(I, 1))
Else
Set colRange = Cells(I, 1)
End If
End If
Next
Next
End With
With colRange
.Font.Color = -16383844
.Interior.Color = 13551615
End With
End Sub
Можно и формулой, но она может потеряться, забыться или сам случайно сотрешь. А макрос можно кинуть, в отдельный файлик, текстовый и при случае юзать. Но все равно спасибо. Всем спасибо, проблему решили.