Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Чередование закраски строк в диапазоне / 12 сообщений из 12, страница 1 из 1
18.09.2009, 15:42
    #36204513
Q8ake
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чередование закраски строк в диапазоне
Коллеги,

есть диапазон данных на 1 листе A15:AI1497
Диапазон постоянно расширяется путем добавления новых строк.

Необходимо для удобства работы с информацией выделить строки чередующимся цветом (белый/серый).
Условное форматирование не подходит, т.к. используется для выделения цифровых значений.

Как быть?
Заранее благодарю за помощь.
...
Рейтинг: 0 / 0
18.09.2009, 16:32
    #36204731
Чередование закраски строк в диапазоне
Q8ake,

Выделить все ячейки таблицы и Формат - Автоформат (Format - AutoFormat).
При добавлении строк потом можно выделить несколько строк, копировать, специальная вставка, форматы.
...
Рейтинг: 0 / 0
18.09.2009, 16:48
    #36204816
sergeyvg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чередование закраски строк в диапазоне
можно формулу условного форматирования, например, такую попробовать
Код: plaintext
=И(ЧЁТН(СТРОКА())=СТРОКА();ЕЧИСЛО(C5))
...
Рейтинг: 0 / 0
21.09.2009, 16:12
    #36208147
Q8ake
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чередование закраски строк в диапазоне
а можно это как то сделать на VB?
...
Рейтинг: 0 / 0
22.09.2009, 08:49
    #36208982
sergeyvg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чередование закраски строк в диапазоне
на бейсике что-нибудь такое
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Sub Test()
Dim I As Long, FlagNum As Boolean, FlagCol As Boolean
Cells.EntireRow.Interior.ColorIndex = xlColorIndexNone
  FlagNum = False: FlagCol = False
  For I =  1  To ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count
    If IsNumeric(Cells(I,  1 )) And Not (IsEmpty(Cells(I,  1 )) Or IsNull(Cells(I,  1 ))) Then
      If Not FlagNum Then
        Cells(I,  1 ).EntireRow.Interior.ColorIndex =  15 
        FlagNum = True: FlagCol = True
      Else
        If Not FlagCol Then
          Cells(I,  1 ).EntireRow.Interior.ColorIndex =  15 
          FlagCol = True
        Else
          FlagCol = False
        End If
      End If
    Else
      FlagNum = False: FlagCol = False
    End If
  Next I
End Sub 'Test
...
Рейтинг: 0 / 0
22.09.2009, 14:48
    #36210378
Q8ake
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чередование закраски строк в диапазоне
sergeyvg,

Спасибо за помощь,
но в ВБ полный чайник...
как указать именно мой диапазон и лист на котором это должно работать, как это работает?

Заранее благодарю за совет.
...
Рейтинг: 0 / 0
22.09.2009, 15:40
    #36210587
sergeyvg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чередование закраски строк в диапазоне
работа идет с активным листом
сначала сбрасывается раскраска всего листа
Код: plaintext
Cells.EntireRow.Interior.ColorIndex = xlColorIndexNone
потом с первой строки до последней используемой строки идет цикл по строкам
Код: plaintext
  For I =  1  To ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count
далее проверка ячейки текущей строки, первой колонки, что там число и она не пустая
Код: plaintext
    If IsNumeric(Cells(I,  1 )) And Not (IsEmpty(Cells(I,  1 )) Or IsNull(Cells(I,  1 ))) Then
это раскраска
Код: plaintext
        Cells(I,  1 ).EntireRow.Interior.ColorIndex =  15 
красим с первой ячейки, встретившейся после нечисловой ячейки, через одну

чтобы посмотреть помощь по немногочисленным здесь операторам, надо встать курсором на оператор и нажать <F1>
...
Рейтинг: 0 / 0
22.09.2009, 16:26
    #36210818
Q8ake
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чередование закраски строк в диапазоне
sergeyvg,

Спасибо большое... все работает как надо!!!
последний вопрос...
если я в середине диапазона копирую/вставляю ячейки...
чередование нарушается..и надо еще раз запускать процедуру в ручную...

это можно автоматизировать?
...
Рейтинг: 0 / 0
22.09.2009, 17:27
    #36211051
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чередование закраски строк в диапазоне
Можно код поставить на Private Sub Workbook_SheetActivate(ByVal Sh As Object)
например:
Код: plaintext
1.
2.
3.
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If ActiveSheet.Name = "Sheet1" Then MsgBox  1 
End Sub
Будет перекрашивать каждый раз при активации листа. Можно конечно и на
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
если нервы крепкие...
sergeyvg - а почему не
Код: plaintext
For I =  1  To ActiveSheet.UsedRange.Rows.Count
я бы так сделал
...
Рейтинг: 0 / 0
23.09.2009, 08:04
    #36211754
sergeyvg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чередование закраски строк в диапазоне
если первые строки пустые, то посмотрите что дают ActiveSheet.UsedRange.Row и ActiveSheet.UsedRange.Rows.Count, конечно правильнее было бы так
Код: plaintext
  For I = ActiveSheet.UsedRange.Row To ActiveSheet.UsedRange.Rows.Count
но в данном, конкретном случае отработает и
Код: plaintext
  For I =  1  To ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count
...
Рейтинг: 0 / 0
23.09.2009, 09:23
    #36211845
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чередование закраски строк в диапазоне
sergeyvgесли первые строки пустые, то посмотрите что дают ActiveSheet.UsedRange.Row и ActiveSheet.UsedRange.Rows.Count, конечно правильнее было бы так
Код: plaintext
  For I = ActiveSheet.UsedRange.Row To ActiveSheet.UsedRange.Rows.Count
но в данном, конкретном случае отработает и
Код: plaintext
  For I =  1  To ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count

Понятно. Я ошибался, если первые строки пустые, недобор получается. Только наверное правильно тогда так:
Код: plaintext
For I = ActiveSheet.UsedRange.Row To ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count -  1 
зачем лишнюю строку обрабатывать... а с
Код: plaintext
For I = ActiveSheet.UsedRange.Row To ActiveSheet.UsedRange.Rows.Count
тоже недобор.
...
Рейтинг: 0 / 0
23.09.2009, 10:46
    #36212008
sergeyvg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чередование закраски строк в диапазоне
точно, не думая наваял ерунду, раскаиваюсь:)
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Чередование закраски строк в диапазоне / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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