Страницы: 1 2 След.
RSS
Назначить цвет ячейки по типу информации.,
 
Доброго времени суток. В условном форматирования только 3 условия. Нужно на много больше.
В определённых ячейках, предположим L1;L2..., подписаны цвета типов событий. В A1;A2... пишу событие, в B1;B2... ставлю тип события, предположим 1;2... Как по типу события, из ячейки B1, закрасить ячейку A1 из списка цветов ячеек L. Надеюсь, что понятно описал.
В макросах не силён. Пробовал дату события ставить в разных колонках, путаница, наглядности никакой. Думаю выделение цветом лучше всего.
 
Пример будет? Или вам макрос на пальцах объяснять?
Кому решение нужно - тот пример и рисует.
 
Если набор цветов у Вас не меняется, то смысла в макросе нет, можно решить обычным условным форматированием.
 
Набор цветов не меняется, только цветов больше чем позволяет условное форматирование, в смысле количества.

Цитата
Пытливый пишет:
Пример будет?
Пример приложил. С макросами мечтаю разобраться, но катастрофически не хватает времени  :(  
1. приложил.
2. не понял.
3. правила читал, но всё равно - сам себе "злобный буратина"
Изменено: Фрезератор - 05.06.2013 13:29:33
 
Цитата
Фрезератор пишет:
Пример приложил
И где он?
 
Прошу прощения, забыл пример приложить.
 
Цитата
Фрезератор пишет: ... Пример приложил
Примеры нонче пошли какие-то не приложительные...  ;)
И если по сусекам поскрести, то - http://www.planetaexcel.ru/techniques/9
Изменено: Z - 05.06.2013 13:03:52
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
а вариант "перейти на более свежий офис" не рассматривается?
Учимся сами и помогаем другим...
 
Цитата
Фрезератор пишет: ...только цветов больше...
Да Вы что?! Вам всего спектра мало????
 
Niff-Nif, у ТС 2003ий офис стоит, а у него ограничение на 3 УФ. Так что ваш наезд неуместен.
Учимся сами и помогаем другим...
 
Не знал что кто-то еще им пользуется!
З.Ы. Да разве поросенок может наехать? Сие было искреннее удивление  :)
 
Цитата
Niff-Nif пишет:
Не знал что кто-то еще им пользуется!
Достаточно было посмотреть на расширение приложенного файла.
Кстати, я пользуюсь.
 
Цитата
ber$erk пишет:
а вариант "перейти на более свежий офис" не рассматривается?
Машина слабовата. Старенькая. Там всё старенькое.

УФ позволяет только три варианта условий на одну ячейку. Поязвить конечно можно, но лучше не надо, мы ведь все человеки.
 
Цитата
Фрезератор пишет: ... Поязвить конечно можно...
Даже, порой, необходимо - отрезвляет, стряхивает пыль с серого вещества...  ;)
Но - о деле! Из самоката тюнинговать мерс - морока гиблая. Ведь вам не просто раскрасить надо, а главное - работать с этой "мурзилкой": фильтровать, делать выборки, сортировать и пр. Версии 97-2003 имеют ограничения -  :(  - и от них избавиться просто и дешево не получится, тем более, если вы далеки от VBA и программирования. А если еще и вашим клиентам с такими файлами работать!..
В примере есть номера - ориентируйтесь на них; или следует подумать о коренном обновлении XL'я. Удачи!
Изменено: Z - 05.06.2013 13:57:15
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
XL'м стал пользоваться недавно. Оказалась чудная программа. Даже тупо дневник вести удобно. А ввиду отсутствия опыта, наверно ставлю несуразные задачи. За совет обновления спасибо. Надо железяку сначала поменять.
 
Да не торопитесь уж менять железо - если есть интерес к Excel-ю, то думаю и к VBA появится, т.к. с ним Excel становится в 100 раз интереснее. Начните изучать. Будут вопросы - задавайте здесь (можете и в личку).
Скажу наперед, что решение проблемы достигается путем несложного макроса, который будет работать в 2003 офисе и не придется менять железо :-)
Учимся сами и помогаем другим...
 
Вот за это спасибо! Разбираться в чём то новом, это интересно. Лиш бы не было хуже.  :)
 
Код
Sub Цвет_Фона_от_Номера()
    Dim lngI As Long
    Dim lngJ As Long
    Dim arrA()
    lngI = Cells(Rows.Count, 7).End(xlUp).Row
    ReDim arrA(1 To lngI)
    For lngI = 2 To Cells(Rows.Count, 7).End(xlUp).Row
        arrA(lngI - 1) = Cells(lngI, 8).Interior.ColorIndex
    Next lngI
    For lngI = 2 To Cells(Rows.Count, 4).End(xlUp).Row
        For lngJ = LBound(arrA) To UBound(arrA)
            If Cells(lngI, 4).Value = lngJ Then
                Cells(lngI, 2).Interior.ColorIndex = arrA(lngJ)
            End If
        Next lngJ
    Next lngI
End Sub


текст кода, который в прилагаемом файле. Запуск макроса - по щелчку мышОм на фигуре с характерной надписью. :)
Будут вопросы - велкам.
Кому решение нужно - тот пример и рисует.
 
Вариант
Код
Sub raskraska()
Dim rng As Range
For Each rng In Range("B2:B" & Cells(Rows.Count, 2).End(xlUp).Row)
rng.Interior.ColorIndex = WorksheetFunction.Choose(rng.Offset(, 2).Value, 6, 40, 15, 35, 37, 34) 'выбор номера цвета
Next
End Sub
 
Спасибо за примеры. Прошу тайм-аут. Надо сначала снятся с ручника, теорию почитать. Тупо вставлять примеры не прикольно. За мой пример не судите строго, он выдуман на ходу. Цели, конечно же, другие. До кучи, один вопросик. Почему, когда пишешь =raskraska(B2) или  =Цвет_Фона_от_Номера(B2), сообщение "Данное имя недопустимо"? Ведь модуль уже вставлен.
 
потому что данные процедуры не предусматривают параметры
Код
Sub raskraska()
и
Код
Sub Цвет_Фона_от_Номера()
Учимся сами и помогаем другим...
 
Цитата
Фрезератор пишет: До кучи, один вопросик. Почему, когда пишешь =raskraska(B2) или =Цвет_Фона_от_Номера(B2), сообщение "Данное имя недопустимо"? Ведь модуль уже вставлен.
Вы пытаетесь использовать набор инструкций (макрос) в который никакие парамеры передавать не надо, как функцию, поэтому и ругается.
Кому решение нужно - тот пример и рисует.
 
Доброго времени суток.
Почитал азы, потерял сон.
Подскажите, как получить ряд и колонку активной ячейки, в которую буду вставлять формулу.
Как я понял в переменные lngI и lngJ могу вносить ряд и колонку.
Описанные:
   Dim lngI As Long
   Dim lngJ As Long
Чего сляпаю, выложу для критики.
Начал примерно так:
Function тип_цвета(Num) //Num- предполагаю что в этой ячейке будет стоять номер типа цвета
   Dim lngIt As Long //ряд текущей ячейки
   Dim lngJt As Long //колонка текущей ячейки
А можно сделать так? Dim lngIt,lngJt As Long
lngIt = получить ряд ТЯ
lngJt = получить колонку ТЯ
If Num > 0 Then Cells(lngIt,lngJt).Interior.ColorIndex = Cells(Num+1,8(ячейка с цветом)).Interior.ColorIndex
End Function
 
Сляпал:
Function тип_цвета(Num)
Dim Lr As Long
Dim Lk As Long
Lr = ActiveCell.Row
Lk = ActiveCell.Column
If Num > 0 Then Cells(Lr,Lk).Interior.ColorIndex = Cells(Num + 1,8) .Interior.ColorIndex
End Function

Не работает.
Изменено: Фрезератор - 07.06.2013 13:53:58
 
Фрезератор, Функция не может изменять свойства объекта, она возвращает значение. Вам ведь не зря 2 примера выложили где код оформлен именно процедурой.
 
Спасибо. Переделаю. А код в принципе правильный?
 
давайте разбираться. :)

Dim Lr As Long
Dim Lk As Long
Объявили переменные

Lr = ActiveCell.Row
Lk = ActiveCell.Column
Присвоили переменным значения столбца и строки активной ячейки

If Num > 0 Then Cells(Lr,Lk).Interior.ColorIndex = Cells(Num + 1, .Interior.ColorIndex
А вот тут - непонятно. Буквально написано - если Num больше 0, то для ячейки с строкой Lr и столбцом Lk индекс цвета присвоить как у ячейки .... и тут засада - потому как вы вторую ячейку задаете не cells(row,column), а получается индексом cells(i) А среди множества каких ячеек будет этим индексом определяться конкретная ячейка?
Например, вы выделили диапазон
Dim ORange as range
ORange=[a1:a12]
а теперь хотите в этом выделенном диапазоне что-то сделать с 5 по счету ячейкой
ORange.Cells(5).Inteior.Color=vbRed

Или сделать тоже самое, для ячейки в 5 строке 1 столбца
Cells(5,1).interior.color=vbRed

Т.е. я к чему веду, если вы работаете с ячейкой и указываете ее через конкретную стоку и конкретный столбец, то и вторую тогда тоже указывайте через конкретную строку и столбец, например
Cells(I,J)=Cells(I+1,J)
Кому решение нужно - тот пример и рисует.
 
Цитата
Пытливый пишет:
и тут засада - потому как вы вторую ячейку задаете не cells(row,column),
Не не не. Я пытался параметром Num получить значение из необходимой ячейки, номер цвета. Образцы цвета стоят в восьмом столбце, начиная со второго ряда. Это редактор лупит вместо восьмёрки со скобкой смайлик.
If Num > 0 Then Cells(Lr,Lk).Interior.ColorIndex = Cells(Num + 1,восемь) .Interior.ColorIndex.
Такая формулировка допустима?
Изменено: Фрезератор - 08.06.2013 08:27:20
 
Только меня терзают смутные сомнения.
Lr = ActiveCell.Row
Lk = ActiveCell.Column
получаем координаты текущей ячейки. Фигня какая то. Фактически надо чтобы ячейка (3,2) закрасилась номером цвета из ячейки (3,4)
 
Фрезератор, Вы бы еще раз выложили пример более приближенный к реальным данным и описанием задачи. Если Вам надо красить при вводе - лучше использовать контроль событий листа. А если Вам надо сместится от текущей ячейки - используете смешение текущая_ячейка.Offcet(строки, столбцы)
Страницы: 1 2 След.
Наверх