Страницы: 1
RSS
Программно в одной ячейке изменить цвет одного из 2-х слов, как?
 
Ячейка содержит: "Оплата: Нет". Как можно шрифт только слова "Нет" сделать, например, красным?
 
В строке формул выделите нужное и форматируйте.
 
В таком духе?  
 
Sub test()  
   With Range("A1")  
       .Value = "Îïëàòà: Íåò"  
       .Characters(InStr(.Value, ":") + 1, Len(.Value)).Font.ColorIndex = 3  
   End With  
End Sub
KL
 
Упс, как всегдв - подвел юникод :-)  
 
Sub test()  
   With Range("A1")  
       .Value = "Оплата: Нет"  
       .Characters(InStr(.Value, ":") + 1, Len(.Value)).Font.ColorIndex = 3  
   End With  
End Sub
KL
 
{quote}{login=_Вопрос?}{date=02.09.2009 01:31}{thema=Программно в одной ячейке изменить цвет одного из 2-х слов, как?}{post}Ячейка содержит: "Оплата: Нет". Как можно шрифт только слова "Нет" сделать, например, красным?{/post}{/quote}  
И нужна эта головная боль? Да еще и программно? А не проще УФ - если "нет" , то красно-красно, и в отдельной ячее...
 
KL, спасибо!  
Z, там нет "отдельной ячейки", это - примечание.
 
{quote}{login=_Вопрос?}{date=02.09.2009 03:24}{thema=}{post}KL, спасибо!  
Z, там нет "отдельной ячейки", это - примечание.{/post}{/quote}  
Глаза, очи, очки протер: пост №раз, читаем: "Ячейка содержит: "Оплата: Нет".  
Чесн слово, не я писал...
 
Протёр, прочитал...ну немного ошибся, но большой разницы в данном случае ведь нет - и в примечании, и в одиночной ячейке нет "другой ячейки"...  
 
Вы мне лучше вот что скажите - может код так изменить:  
  S = Range("A1").Value  
  If InStr(S, "Нет") >0 Then  
     .Characters(InStr(S, ":") + 1, Len(S)).Font.ColorIndex = 3  
  End If  
Типа, если в тексте отсутствует "Нет", то раскрашивать ничего не надо.
 
Sub test()  
   [A1] = "Îïëàòà: Äà"
   [A2] = "Îïëàòà: Íåò"
   For i = 1 To 2  
       With Cells(i, 1)  
           .Font.ColorIndex = 0  
           If .Value Like "*Íåò*" Then _  
               .Characters(InStr(.Value, "Íåò"), 3).Font.ColorIndex = 3  
       End With  
   Next i  
End Sub
KL
 
Sub test()  
   [A1] = "Оплата: Да"
   [A2] = "Оплата: Нет"
   For i = 1 To 2  
       With Cells(i, 1)  
           .Font.ColorIndex = 0  
           If .Value Like "*Нет*" Then _  
               .Characters(InStr(.Value, "Нет"), 3).Font.ColorIndex = 3  
       End With  
   Next i  
End Sub
KL
 
Ставите курсор на  ячейку столбца в котором нужно выделить цветом нужное  текстовое выражение,  в Вашем случае  «Нет»  
В главном меню выбираете - «Формат»  выбираете - «Условное форматирование». Откроется окно.  
В первом поле выбираете - «значение»,  во втором  -  «равно»,  в третьем поле пишите то текстовое выражение которое хотите выделить цветом.    
После нажимаете кнопку - «Формат», - в опции  «Шрифт» выбираете цвет какой нравится. Нажимаете ОК. И еще ОК.  
Это выражение отобразится  выбранным Вами цветом.    
Дальше, формат этой ячейки нужно скопировать на всю колонку.  
Устанавливаете курсор на эту ячейку.  
Правой кнопкой мыши выбираете «Копировать».  
Выделяете весь диапазон столбца -  куда копировать  
В главном меню выбираете – «Правка» - «Специальная вставка» -  выбираете - «форматы» - ОК  
Выражение будет выделяться цветом при любом шрифте но при полном совпадении текста в заданном условии!  
Спецы могут улыбнуться  по поводу раскладки, но не все родились спецами.
 
ГРЫША, перечитываем вопрос. И видим - ОДНО только слово требуется отформатировать. Не всю ячейку.
 
ГРЫША, автору примерно так надо:
 
:-)
 
Все правильно - мне надо было форматировать цвет только части строки и только, если эта часть равна "Нет". Ну, и каюсь, что сразу не сказал, что речь идет о примечании. В результате получилось вот что:  
With xlsSheet  
.cells(j - 1, 3).addcomment  
'создать текст примечания  
.cells(j - 1, 3).Comment.Text Text:="<предыдущие строки примечания>" & Сhr(10) & "Оплата: " & IIf(IsEmpty(.cells(j - 1, 17)), "Нет", .cells(j - 1, 17))  
'изменить цвет фона окна примечания на светло-голубой  
.cells(j - 1, 3).Comment.Shape.Fill.ForeColor.SchemeColor = 41    
'убрать жирный шрифт, устанавливаемый по умолчанию  
.cells(j - 1, 3).Comment.Shape.TextFrame.Characters.Font.Bold = False  
'изменить шрифт Tahoma, устанавливаемый по умолчанию  
.cells(j - 1, 3).Comment.Shape.TextFrame.Characters.Font.Name = "Arial"  
'изменить размер шрифта, устанавливаемый по умолчанию  
.cells(j - 1, 3).Comment.Shape.TextFrame.Characters.Font.Size = 9  
'если текст примечания содержит слово "Нет"  
If InStr(1, .cells(j - 1, 3).Comment.Text, "Нет") > 0 Then  
'окрасить "Нет" в красный цвет  
.cells(j - 1, 3).Comment.Shape.TextFrame.Characters(InStr(1, .cells(j - 1, 3).Comment.Text, "Нет"), 3).Font.ColorIndex = 3  
End If  
'размер окна примечания по размеру текста  
.cells(j - 1, 3).Comment.Shape.TextFrame.AutoSize = True  
End With  
Все работает, все красиво, все спасибо!
 
СПАСИБО ПОНЯЛ! ЧИТАЛ НЕ ВНИМАТЕЛЬНО. НАПИСАНО:  
Ячейка содержит: "Оплата: Нет". Как можно шрифт только слова "Нет" сделать, например, красным?  
А ЕСЛИ БЫ БЫЛО НАПИСАНО:  
Ячейка содержит ТЕХТ: "Оплата: Нет". Как можно ИЗ ТЕКСТА ВЫДЕЛЬТЬ шрифт только слова "Нет" сделать, например, красным?  
ДАЖЕ Я НЕВНИМАТЕЛЬНЫЙ ПОНЯЛ БЫ.  
НО, ДУМАЮ И МОЕ РАЗЪЯСНЕНИЕ КОМУ НИТЬ ПРИГОДИТСЯ.
 
Если надо в строке найти и окрасить не одно слово, а все такие же слова то строка  
....Comment.Shape.TextFrame.Characters(InStr(1, .cells(j - 1, 3).Comment.Text, "Нет"), 3).Font.ColorIndex = 3  
найдет только первое вхождение, а остальные как искать?
 
Может я коряво спросил?  
Есть строка: "сиарар*орпопо*орлол*олролрп)  
Как найти и покрасить все знаки * ?
 
Mystr = Cells(1, 1).Comment.Text  
MyDelim = "НЕТ"  
fStr = Split(Mystr, MyDelim)  
For i = LBound(fStr) To UBound(fStr)  
iPoz = iPoz + Len(fStr(i)) + IIf(i = LBound(fStr), 1, Len(MyDelim))  
Cells(1, 1).Comment.Shape.TextFrame.Characters(iPoz, Len(MyDelim)).Font.ColorIndex = 3  
Next
Bite my shiny metal ass!      
 
Наверное так будет понятнее:  
With xlsSheet  
.cells(j - 1, 3).addcomment  
'создать текст примечания  
.cells(j - 1, 3).Comment.Text Text:="<предыдущие строки примечания>" & Сhr(10) & "Оплата: " & IIf(IsEmpty(.cells(j - 1, 17)), "Нет", .cells(j - 1, 17))  
'изменить цвет фона окна примечания на светло-голубой  
.cells(j - 1, 3).Comment.Shape.Fill.ForeColor.SchemeColor = 41    
'убрать жирный шрифт, устанавливаемый по умолчанию  
.cells(j - 1, 3).Comment.Shape.TextFrame.Characters.Font.Bold = False  
'изменить шрифт Tahoma, устанавливаемый по умолчанию  
.cells(j - 1, 3).Comment.Shape.TextFrame.Characters.Font.Name = "Arial"  
'изменить размер шрифта, устанавливаемый по умолчанию  
.cells(j - 1, 3).Comment.Shape.TextFrame.Characters.Font.Size = 9  
'если текст примечания содержит слово "Нет"  
If InStr(1, .cells(j - 1, 3).Comment.Text, "Нет") > 0 Then  
'окрасить "Нет" в красный цвет  
With .cells(j - 1, 3)  
iPoz=0  
MyDelim = "Нет"  
fStr = Split(.Comment.Text, MyDelim)  
For i = LBound(fStr) To UBound(fStr)  
iPoz = iPoz + Len(fStr(i)) + IIf(i = LBound(fStr), 1, Len(MyDelim))  
.Comment.Shape.TextFrame.Characters(iPoz, Len(MyDelim)).Font.ColorIndex = 3  
Next  
End With  
End If  
'размер окна примечания по размеру текста  
.cells(j - 1, 3).Comment.Shape.TextFrame.AutoSize = True  
End With
Bite my shiny metal ass!      
 
Спасибо!
 
{quote}{login=ГРЫША}{date=03.09.2009 01:23}{thema=}{post}СПАСИБО ПОНЯЛ! ЧИТАЛ НЕ ВНИМАТЕЛЬНО. НАПИСАНО:  
Ячейка содержит: "Оплата: Нет". Как можно шрифт только слова "Нет" сделать, например, красным?  
А ЕСЛИ БЫ БЫЛО НАПИСАНО:  
Ячейка содержит ТЕХТ: "Оплата: Нет". Как можно ИЗ ТЕКСТА ВЫДЕЛЬТЬ шрифт только слова "Нет" сделать, например, красным?  
ДАЖЕ Я НЕВНИМАТЕЛЬНЫЙ ПОНЯЛ БЫ.  
НО, ДУМАЮ И МОЕ РАЗЪЯСНЕНИЕ КОМУ НИТЬ ПРИГОДИТСЯ.{/post}{/quote}  
и вправду здорово помогли!!! Спасибо .... за невнимательность :))
 
Не знал я что такой финт возможен, с частью текста ))) (радостно чешу затылок).  
А с формулами нельзя ли замутить  смену цвета Знаю варианты: если свою в бейсике написать, формат ячейки и условное форматирование, а вдруг функция есть? Может есть надежда?    
 
- Наденька, ты где? ((с) Ульянов-Ленин)
 
Запоздалая благодарность?  
Вот ведь как бывает, иногда и по полгода "Спасибо" ждать приходится:-)
Страницы: 1
Читают тему
Loading...