Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Закрашивание ячеек - макрос. Добавлено: 23.08.06 11:38  

Автор вопроса:  pavel
Как сделать следующее на ВБА?
Есть столбец, в ячейках которого написано: красный, синий, синий, зеленый, красный, зеленый и т.д. Размер столбца постояно мняется - вставляются новые данные, удаляются старые. Нужен макрос, который оставляя надписи в ячейках менял бы фон на соответствующий надписи.

Ответить

  Ответы Всего ответов: 3  

Номер ответа: 1
Автор ответа:
 Незнайка



Вопросов: 7
Ответов: 188
 Профиль | | #1 Добавлено: 23.08.06 12:28
Создаешь двумерный массивчик (ЦветПрописью;ЦветЧислом). Пробегаешь нужный столбец - проверяешь значение ячеек на совпадение с ЦветПрописью и красишь соответствующим ЦветЧислом.

Ответить

Номер ответа: 2
Автор ответа:
 pavel



Вопросов: 1
Ответов: 1
 Профиль | | #2 Добавлено: 23.08.06 16:18
Ну вообщем, да. Вот, только без массива:

Sub ChColour4()
'
' ChColour4 Макрос
' Макрос записан 23.08.2006 (moskva6)
'

'
    Range("I1";).Select
    For i = 1 To 1000
        ActiveCell.Offset(1, 0).Activate
        If ActiveCell.Value = "Blanc Banquise" Then Selection.Interior.ColorIndex = 2
        If ActiveCell.Value = "Bleu Amiral" Then Selection.Interior.ColorIndex = 11
        If ActiveCell.Value = "Bleu Grand Pavois metalli" Then Selection.Interior.ColorIndex = 5
        If ActiveCell.Value = "Bleu Line" Then Selection.Interior.ColorIndex = 41
        If ActiveCell.Value = "Bleu Lucia nacre" Then Selection.Interior.ColorIndex = 33
        If ActiveCell.Value = "Bleu Mauritius nacre" Then Selection.Interior.ColorIndex = 11
        If ActiveCell.Value = "Bleu Oriental nacre" Then Selection.Interior.ColorIndex = 11
        If ActiveCell.Value = "Bronze Persan" Then Selection.Interior.ColorIndex = 12
        If ActiveCell.Value = "Ganache" Then Selection.Interior.ColorIndex = 53
        If ActiveCell.Value = "Gris Aluminium metallise" Then Selection.Interior.ColorIndex = 15
        If ActiveCell.Value = "Gris Fer nacre" Then Selection.Interior.ColorIndex = 48
        If ActiveCell.Value = "Gris Fulminator metallise" Then Selection.Interior.ColorIndex = 16
        If ActiveCell.Value = "Gris Iceland metallise" Then Selection.Interior.ColorIndex = 34
        If ActiveCell.Value = "Iridis" Then Selection.Interior.ColorIndex = 39
        If ActiveCell.Value = "Jaune SCOTT" Then Selection.Interior.ColorIndex = 36
        If ActiveCell.Value = "Nocciola metallise" Then Selection.Interior.ColorIndex = 47
        If ActiveCell.Value = "Noir Obsidien nacre" Then Selection.Interior.ColorIndex = 56
        If ActiveCell.Value = "Noir Onyx" Then Selection.Interior.ColorIndex = 1
        If ActiveCell.Value = "Orange Aerien nacre" Then Selection.Interior.ColorIndex = 46
        If ActiveCell.Value = "Rouge Aden" Then Selection.Interior.ColorIndex = 3
        If ActiveCell.Value = "Rouge Lucifer nacre" Then Selection.Interior.ColorIndex = 3
        If ActiveCell.Value = "Rouge Profond" Then Selection.Interior.ColorIndex = 9
        If ActiveCell.Value = "Sable Bivouac metallise" Then Selection.Interior.ColorIndex = 40
        If ActiveCell.Value = "Sable de Langrune" Then Selection.Interior.ColorIndex = 44
        If ActiveCell.Value = "Vert Ethel" Then Selection.Interior.ColorIndex = 35
        If ActiveCell.Value = "Vert Lenz metallise" Then Selection.Interior.ColorIndex = 4
        If ActiveCell.Value = "Vert Normandie" Then Selection.Interior.ColorIndex = 50
        If ActiveCell.Value = "Vert Nova" Then Selection.Interior.ColorIndex = 10
        If ActiveCell.Value = "Bleu Amiral" Then Selection.Font.ColorIndex = 2
If ActiveCell.Value = "Bleu Grand Pavois metalli" Then Selection.Font.ColorIndex = 2
If ActiveCell.Value = "Bleu Mauritius nacre" Then Selection.Font.ColorIndex = 2
If ActiveCell.Value = "Bleu Oriental nacre" Then Selection.Font.ColorIndex = 2
If ActiveCell.Value = "Noir Obsidien nacre" Then Selection.Font.ColorIndex = 2
If ActiveCell.Value = "Noir Onyx" Then Selection.Font.ColorIndex = 2
If ActiveCell.Value = "Rouge Profond" Then Selection.Font.ColorIndex = 2

    Next i
    
End Sub

Ответить

Номер ответа: 3
Автор ответа:
 Незнайка



Вопросов: 7
Ответов: 188
 Профиль | | #3 Добавлено: 23.08.06 16:30
Справочно: методы Activate и Select - являются одними из САМЫХ МЕДЛЕННЫХ. Не совсем оптимально запихивать их в цикл без особой нужды. Используйте Объекты Cells - для считывания значений, Range - для закраски. Это правильнее. Кстати в вашем случае можно использовать даже не массив а коллекцию причем не пользовательскую а просто объект Collection, поскольку значений у вас два: имя элемента - имя цвета (key); а сам добавляемый элемент - номер цвета. Будет ваще работать быстро и красиво.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам