Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Окрашивание в макросе / 4 сообщений из 4, страница 1 из 1
29.06.2011, 16:26
    #37329270
hum_i
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Окрашивание в макросе
Добрый день!

У меня вот такой вопрос. Я хочу в макросе сделать динамическое окрашивание ячеек, но ячейки ни в какую окрашиваться не хотят. Не подскажите почему?
Вот мой код.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
For i =  8  To  31 
    
    Cells( 7 , st).Value = dt
    
    Dim rs_total As ADODB.Recordset:    Set rs_total = New ADODB.Recordset
    Set rs_total.ActiveConnection = con
    
    If i =  10  Then i = i +  1 
            '--- эфект red ---
            Cells(i, st).Select
            With Selection.Interior
                    .Pattern = xlSolid
                    .PatternColorIndex = xlAutomatic
                    .Color =  255 
                    .TintAndShade =  0 
                    .PatternTintAndShade =  0 
                End With
                
            'Выборка
            Sql = " select"
            Sql = Sql & " t.trafik_dohod"
            Sql = Sql & " from everyday_report t"
            Sql = Sql & " where t.datereg = '" + dt + "'"
            Sql = Sql & " and t.type_id = 1"
            Sql = Sql & " and t.name_id = '" + Cells(i,  1 ).Text + "'"
            
            Cells( 8 , i).Interior.Color = RGB( 194 ,  214 ,  154 ) '--ОКРАШИВАНИЕ
                      
            'Заполение ячеек
            rs_total.Open Sql, con
            Cells(i, st).Value = ""
            Cells(i, st).CopyFromRecordset rs_total
            
            'k = k + 1
            
            '--- эфект null ---
            Cells(i, st).Select
                With Selection.Interior
                    .Pattern = xlNone
                    .TintAndShade =  0 
                    .PatternTintAndShade =  0 
                End With
                
            'Ищем пустые ячейки и меняем на 0 для вычислений в Листе
            'If Cells(i, 3).Value = "" Then
            'Cells(i, 3).Value = "0"
            'End If
                        
    Next i
    i =  0 
    rs_total.Close
...
Рейтинг: 0 / 0
29.06.2011, 18:19
    #37329475
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Окрашивание в макросе
hum_i,

жми F8 и по шагам смотри, как идет окраска.
P.s.
Чтоб покрасить ячейку в красный цвет нужна одна строка кода, а не восемь.
Код: plaintext
Cells(i, st).Interior.Color = vbRed
...
Рейтинг: 0 / 0
29.06.2011, 18:23
    #37329482
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Окрашивание в макросе
hum_i,

так, а по сути ты в начале красишь ячейку Cells(i, st) в красный цвет
Код: plaintext
Cells(i, st).Interior.Color = vbRed
, а потом
зачем то снимаешь окрашивание, причем снимаешь криво, через Pattern, а не Color
Код: plaintext
1.
Cells(i, st).Select
.Pattern = xlNone
Ну вот тебе и ответ, как просил так и работает.
...
Рейтинг: 0 / 0
29.06.2011, 18:25
    #37329488
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Окрашивание в макросе
hum_i,

ну и еще.
Если нужно динамическое окрашивание, то читай хелп по условному форматированию.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Окрашивание в макросе / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]