Страницы: 1
RSS
Присвоение цвета ячейки через функцию
 
Ситуация такая. Нужно через функцию окрасить ячейку в определенный цвет в зависимости от условия. В VB пишу такую функцию:  
 
Function okras(b As Range, c As Boolean)  
If c = True Then  
b.Interior.ColorIndex = 3  
Else: b.Interior.ColorIndex = 2  
End If  
End Function  
 
Но окрашивание не происходит. Даже если во внутрь функции поставить следующее:  
 
With Selection.Interior  
.ColorIndex = 4  
.Pattern = xlSolid  
End With  
 
то окрашивание все равно не происходит.  
Условие True выполняется.  
Как сделать, чтоб через функцию можно было окрасить ячейку???
 
функции не любят что-нибудь окрашивать, удалять и все такое. лучше через процедурку..
 
Дак ясно...  
А процедуру через функцию можно запустить? Пробовал - не получается...  
Почему делаю упор на функции? Ну потому что процедуру вручную надо запускать, а функция выполняется атоматически при изменении содержимого ячеек. Или я ошибаюсь?
 
1. Назначение функции - возвращать значение, а не делать что-либо на листе.    
2. Фунция не всегда автоматически пересчитывается.  
3. При изменении ячеек происходит событие Worksheet_Change. Вставляем нужный код в Private Sub Worksheet_Change(ByVal Target As Range) и наслаждаемся. Например так:  
Private Sub Worksheet_Change(ByVal Target As Range)  
с = Range("A1")  
If c = True Then  
Target.Interior.ColorIndex = 3  
Else: Target.Interior.ColorIndex = 2  
End If  
End Sub
 
Я Все пытаюсь подсчитать количество ячеек одного цвета. Ячейки окрашены через условное форматирование. А такие ячейки подсчитать не так просто, как оказывается. Читал на этом форуме соответствующие темы - так и не нашел ответа...  
Вот и подумал - если окрасить ячейки не через условное форматирование, а соответствующей функцией, то тогда бы все получилось. Но пока не получается))))
 
{quote}{login=Лузер}{date=20.03.2008 05:45}{thema=}{post}1. Назначение функции - возвращать значение, а не делать что-либо на листе.    
2. Фунция не всегда автоматически пересчитывается.  
3. При изменении ячеек происходит событие Worksheet_Change. Вставляем нужный код в Private Sub Worksheet_Change(ByVal Target As Range) и наслаждаемся. Например так:  
Private Sub Worksheet_Change(ByVal Target As Range)  
с = Range("A1")  
If c = True Then  
Target.Interior.ColorIndex = 3  
Else: Target.Interior.ColorIndex = 2  
End If  
End Sub{/post}{/quote}  
 
Подставил, сослался на ячейку с условием. Ничего не происходит... Я не совсем пронял, что есть "Target"?
 
К примеру пишу следующее:  
Private Sub Worksheet_Change(ByVal Target As Range)  
с = Range("m9")  
If c = True Then  
Range("O19").Select  
   With Selection.Interior  
       .ColorIndex = 3  
       .Pattern = xlSolid  
   End With  
End If  
End Sub  
 
Изменение цвета не происходит, условие выполнено. Мне кажется, что процедура не реагирует на изменение содержимого листа. Что делать?
 
Пардон... Процедура Worksheet_Change запускается при изменении содержимого ячеек.  
Значит хочу сделать следующее. при изменении содержимого ячеек надо проверить диапазон значений в одном столбце.    
Пытаюсь написать:  
 
Sub Worksheet_Change(ByVal Target As Range)  
Set c = Range("m9:m19")  
For f = 1 To 10  
If c(f).Cells.Count= True Then ''это я пытался проверить значение в диапазоне  
c(f).Interior.ColorIndex = 3 ''это я пытаюсь поменять цвет  
Else: c(f).Interior.ColorIndex = 2  
End If  
Next  
End Sub  
 
Процедура разумеется не работает. Я немного не догоняю как работать с диапазонами, их свойствами.  
Можно ли использовать цикл "For Each".  
Вообще как правильно сделать проверку диапазона и изменение его свойств?
 
Василий, удалось подсчитать ячейки окрашенные условным форматированием?  
У меня тоже возникла острая необходимость в подсчете ячеек, окрашенных условным форматированием в красный цвет.  
Решение есть?
 
{quote}{login=roka}{date=23.12.2009 05:59}{thema=}{post}Василий, удалось подсчитать ячейки окрашенные условным форматированием?  
У меня тоже возникла острая необходимость в подсчете ячеек, окрашенных условным форматированием в красный цвет.  
Решение есть?{/post}{/quote}  
 
Боюсь Василий Вас не слышит :-)  
 
roka, Вы на дату темы смотрели?  
Больше полутора лет прошло...  
 
ЗЫ Сегодня вообще тем пять из "небытия" подняли...Магнитные бури?
 
{quote}{login=The_Prist}{date=23.12.2009 06:02}{thema=Re: }{post}{quote}{login=roka}{date=23.12.2009 05:59}{thema=}{postвозникла острая необходимость в подсчете ячеек, окрашенных условным форматированием в красный цвет.  
Решение есть?{/post}{/quote}В Копилку загляните. Решение есть и уже достаточно давно...{/post}{/quote}  
СПС, глянул. Не пашет. Может функцию вызываю неправильно?  
=Count_CellColor(E9:E31;3) где 3 - это индекс красного цвета
 
в результате имеем #ЗНАЧ
 
Пробовал изначально с сылкой на ячейку  
=Count_CellColor(E9:E31;F3)  
все тоже самое
 
я не подключал как надстройку тупо модули подсунул в свою книгу
 
вот собственно
 
Постом выше, это я выложил файлик. Просто выкидывает переодически. :(
Страницы: 1
Читают тему
Наверх