Нет заливки ячейки vba excel

Заливка ячейки цветом в VBA Excel. Фон ячейки. Свойства .Interior.Color и .Interior.ColorIndex. Цветовая модель RGB. Стандартная палитра. Очистка фона ячейки.

Свойство .Interior.Color объекта Range

Начиная с Excel 2007 основным способом заливки диапазона или отдельной ячейки цветом (зарисовки, добавления, изменения фона) является использование свойства .Interior.Color объекта Range путем присваивания ему значения цвета в виде десятичного числа от 0 до 16777215 (всего 16777216 цветов).

Заливка ячейки цветом в VBA Excel

Пример кода 1:

Sub ColorTest1()

Range(«A1»).Interior.Color = 31569

Range(«A4:D8»).Interior.Color = 4569325

Range(«C12:D17»).Cells(4).Interior.Color = 568569

Cells(3, 6).Interior.Color = 12659

End Sub

Поместите пример кода в свой программный модуль и нажмите кнопку на панели инструментов «Run Sub» или на клавиатуре «F5», курсор должен быть внутри выполняемой программы. На активном листе Excel ячейки и диапазон, выбранные в коде, окрасятся в соответствующие цвета.

Есть один интересный нюанс: если присвоить свойству .Interior.Color отрицательное значение от -16777215 до -1, то цвет будет соответствовать значению, равному сумме максимального значения палитры (16777215) и присвоенного отрицательного значения. Например, заливка всех трех ячеек после выполнения следующего кода будет одинакова:

Sub ColorTest11()

Cells(1, 1).Interior.Color = 12207890

Cells(2, 1).Interior.Color = 16777215 + (12207890)

Cells(3, 1).Interior.Color = 4569325

End Sub

Проверено в Excel 2016.

Вывод сообщений о числовых значениях цветов

Числовые значения цветов запомнить невозможно, поэтому часто возникает вопрос о том, как узнать числовое значение фона ячейки. Следующий код VBA Excel выводит сообщения о числовых значениях присвоенных ранее цветов.

Пример кода 2:

Sub ColorTest2()

MsgBox Range(«A1»).Interior.Color

MsgBox Range(«A4:D8»).Interior.Color

MsgBox Range(«C12:D17»).Cells(4).Interior.Color

MsgBox Cells(3, 6).Interior.Color

End Sub

Вместо вывода сообщений можно присвоить числовые значения цветов переменным, объявив их как Long.

Использование предопределенных констант

В VBA Excel есть предопределенные константы часто используемых цветов для заливки ячеек:

Предопределенная константа Наименование цвета
vbBlack Черный
vbBlue Голубой
vbCyan Бирюзовый
vbGreen Зеленый
vbMagenta Пурпурный
vbRed Красный
vbWhite Белый
vbYellow Желтый
xlNone Нет заливки

Присваивается цвет ячейке предопределенной константой в VBA Excel точно так же, как и числовым значением:

Пример кода 3:

Range(«A1»).Interior.Color = vbGreen

Цветовая модель RGB

Цветовая система RGB представляет собой комбинацию различных по интенсивности основных трех цветов: красного, зеленого и синего. Они могут принимать значения от 0 до 255. Если все значения равны 0 — это черный цвет, если все значения равны 255 — это белый цвет.

Выбрать цвет и узнать его значения RGB можно с помощью палитры Excel:

Палитра Excel

Палитра Excel

Чтобы можно было присвоить ячейке или диапазону цвет с помощью значений RGB, их необходимо перевести в десятичное число, обозначающее цвет. Для этого существует функция VBA Excel, которая так и называется — RGB.

Пример кода 4:

Range(«A1»).Interior.Color = RGB(100, 150, 200)

Список стандартных цветов с RGB-кодами смотрите в статье: HTML. Коды и названия цветов.

Очистка ячейки (диапазона) от заливки

Для очистки ячейки (диапазона) от заливки используется константа xlNone:

Range(«A1»).Interior.Color = xlNone

Свойство .Interior.ColorIndex объекта Range

До появления Excel 2007 существовала только ограниченная палитра для заливки ячеек фоном, состоявшая из 56 цветов, которая сохранилась и в настоящее время. Каждому цвету в этой палитре присвоен индекс от 1 до 56. Присвоить цвет ячейке по индексу или вывести сообщение о нем можно с помощью свойства .Interior.ColorIndex:

Пример кода 5:

Range(«A1»).Interior.ColorIndex = 8

MsgBox Range(«A1»).Interior.ColorIndex

Просмотреть ограниченную палитру для заливки ячеек фоном можно, запустив в VBA Excel простейший макрос:

Пример кода 6:

Sub ColorIndex()

Dim i As Byte

For i = 1 To 56

Cells(i, 1).Interior.ColorIndex = i

Next

End Sub

Номера строк активного листа от 1 до 56 будут соответствовать индексу цвета, а ячейка в первом столбце будет залита соответствующим индексу фоном.

Подробнее о стандартной палитре Excel смотрите в статье: Стандартная палитра из 56 цветов, а также о том, как добавить узор в ячейку.


 

Здравствуйте, помогите пожалуйста. Нужен макрос, который в большой таблице будет проходиться по каждой строке и если в ней нет залитой ячейки (без учёта условного форматирования)
то скрыть эти строки. Столбцы не скрывать  

 

buchlotnik

Пользователь

Сообщений: 3863
Регистрация: 31.10.2014

Excel 365 Бета-канал

#2

17.07.2019 09:05:52

Код
For Each cell In Selection
        If Not cell.Interior.Color = 65535 Then cell.EntireRow.Hidden = True
    Next

Соблюдение правил форума не освобождает от модераторского произвола
<#0>

 

Прошу прощения, мне необходимо чтобы строки в которых нет цвета скрывались. Я убрал Not , но работает неккоректно  

 

buchlotnik

Пользователь

Сообщений: 3863
Регистрация: 31.10.2014

Excel 365 Бета-канал

#4

17.07.2019 09:34:18

Цитата
Dbogik написал:
работает неккоректно  

в чём проявляется некорректность? вы же все ячейки листа проверяете — зачем? опишите задачу конкретнее

Соблюдение правил форума не освобождает от модераторского произвола
<#0>

 

Вот конкретная задача, начиная с 3й строки и до конца, проверять целиком строку на наличие в ней ячеек залитых цветом, если таковых не имеется (если в строке нет залитых цветом ячеек) то скрывать эту строку(или лучше вообще удалять строки в которых нет ячеек залитых цветом).

Изменено: Dbogik17.07.2019 09:39:33

 

Александр Моторин

Пользователь

Сообщений: 958
Регистрация: 31.12.2012

#6

17.07.2019 09:40:32

попробуй сравнивать не цвет, а индекс. Нет заливки это не белый цвет

Код
cell.Interior.Colorindex= -4142

Изменено: Александр Моторин17.07.2019 09:40:59

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

#7

17.07.2019 09:46:49

В названии темы

Цитата
скрытие строк если есть цвет

В сообщении:

Цитата
Dbogik написал:  (если в строке нет залитых цветом ячеек) то скрывать эту строку

В названии

Цитата
скрытие

В сообщении:

Цитата
скрывать… или… удалять

Вы уж определитесь…

 

Dbogik

Гость

#8

17.07.2019 09:50:20

Цитата
vikttur написал:
Вы уж определитесь…

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

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

У меня нет времени перечитывать все сообщения во всех темах. Есть замечание. есть реакция.

 

Дмитрий(The_Prist) Щербаков

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#10

17.07.2019 10:00:21

Думаю, такой код будет более быстрым:

Код
Sub SSS()
    Dim rrow As Range, lr As Long
    Application.ScreenUpdating = False
    For lr = 3 To ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count - 1
        Set rrow = ActiveSheet.Rows(lr)
        If Not IsNull(rrow.Interior.ColorIndex) Then rrow.Hidden = True
    Next
    Application.ScreenUpdating = True
End Sub

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

Боже мне просто необходима помощь в том чтобы из 2000 строк остались только те строки, в которых хотя бы одна ячейка залита цветом.

 

Прекрасно, работает на ура, спасибо большое, на сколько будет сложно сделать, чтоб была возможность выбрать файлы (или папку в которой они лежат, например файлы 1,2,3), и происходило формирование одного файла, в котором остануться только строки с цветом из файлов 1+2+3

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

#13

17.07.2019 10:12:10

Цитата
Dbogik написал: Боже мне просто необходима помощь

А мне необходимо, чтобы в темах был порядок. Ознакомьтесь с правилами форума и на будущее: если есть замечание, прошу без особых препирательств и рассуждений устранять их.

Makroshka

0 / 0 / 0

Регистрация: 26.09.2016

Сообщений: 150

1

Поиск ячеек без заливки

03.10.2016, 11:39. Показов 9607. Ответов 10

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

В одном документе были выделенны дублирующиеся значения этим кодом

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Columns("B:B").Select
    Selection.FormatConditions.AddUniqueValues
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    Selection.FormatConditions(1).DupeUnique = xlDuplicate
    With Selection.FormatConditions(1).Font
        .Color = -16383844
        .TintAndShade = 0
    End With
    With Selection.FormatConditions(1).Interior
        .PatternColorIndex = xlAutomatic
        .Color = 13551615
        .TintAndShade = 0
    End With
    Selection.FormatConditions(1).StopIfTrue = False
    Sheets("5-1").Delete
    Application.DisplayAlerts = False

Следующим кодом мне необходимо найти ячейки без заливки и скопировать из строки данные в другой документ, но высвечивает постоянно ошибку If Cell.Interior.ColorIndex = 0 Then. Что я делаю неправильно?

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
thName = ActiveWorkbook.Name
    MsgBox ("Выберите нужный файл")
    bfName = Application.GetOpenFilename()
    Workbooks.Open (bfName)
    bfName = ActiveWorkbook.Name
    
    Workbooks(thName).Activate
    Sheets("1").Select
    Dim x1
        For x = 2 To Cells(Rows.Count, 2).End(xlUp).Row
            If Cell.Interior.ColorIndex = None Then
                 With Workbooks(bfName).Sheets("Новые")
                .Cells(.Cells(Rows.Count, 1).End(xlUp).Row + 1, 1) = Cells(x, 1)
                .Cells(.Cells(Rows.Count, 2).End(xlUp).Row + 1, 2) = Cells(x, 2)
                End With
             End If
        Next



0



Michael99

190 / 59 / 20

Регистрация: 16.07.2013

Сообщений: 234

03.10.2016, 12:16

2

Visual Basic
1
Cell.Interior.ColorIndex

что это за ячейка без адреса? в фор иче было бы понятно, но в таком цикле нет



0



0 / 0 / 0

Регистрация: 26.09.2016

Сообщений: 150

03.10.2016, 12:35

 [ТС]

3

А как правильно отобразить ячейку без заливки? Interior.Color=0 тоже пробывала и все также выдает ошибку



0



Shersh

Заблокирован

03.10.2016, 12:37

4

Visual Basic
1
If CellS(x,2).Interior.ColorIndex = None Then

?



0



Michael99

190 / 59 / 20

Регистрация: 16.07.2013

Сообщений: 234

03.10.2016, 12:41

5

Visual Basic
1
If Cells(x, 2).Interior.Colorindex = -4142



1



0 / 0 / 0

Регистрация: 26.09.2016

Сообщений: 150

03.10.2016, 12:46

 [ТС]

6

Код теперь ошибки не выдает, но нужной цели не достигает. Мне кажется это из-за того, что если окрашивание дублирующих значений идет через условное форматирование, то окрашивание идет как-то по другому.

Добавлено через 3 минуты
Michael99, тоже не то — он скопировал вообще все ячейки — и окрашенные и нет.



0



190 / 59 / 20

Регистрация: 16.07.2013

Сообщений: 234

03.10.2016, 12:54

7

Лучше файл пришлите, гадать дольше получится



0



0 / 0 / 0

Регистрация: 26.09.2016

Сообщений: 150

03.10.2016, 13:04

 [ТС]

8

Копирование из файла «Пример03_10_16» в «123»



0



Michael99

190 / 59 / 20

Регистрация: 16.07.2013

Сообщений: 234

03.10.2016, 13:30

10

Visual Basic
1
If Cells(x, 2).DisplayFormat.Font.Color = 0 Then



0



0 / 0 / 0

Регистрация: 26.09.2016

Сообщений: 150

03.10.2016, 13:34

 [ТС]

11

Спасибо Michael99, заработало



0



As part of a VBA program, I have to set the background colors of certain cells to green, yellow or red, based on their values (basically a health monitor where green is okay, yellow is borderline and red is dangerous).

I know how to set the values of those cells, but how do I set the background color.

asked Dec 13, 2008 at 11:39

paxdiablo's user avatar

paxdiablopaxdiablo

844k233 gold badges1565 silver badges1937 bronze badges

You can use either:

ActiveCell.Interior.ColorIndex = 28

or

ActiveCell.Interior.Color = RGB(255,0,0)

answered Dec 13, 2008 at 11:43

Vinko Vrsalovic's user avatar

Vinko VrsalovicVinko Vrsalovic

328k53 gold badges332 silver badges370 bronze badges

2

This is a perfect example of where you should use the macro recorder. Turn on the recorder and set the color of the cells through the UI. Stop the recorder and review the macro. It will generate a bunch of extraneous code, but it will also show you syntax that works for what you are trying to accomplish. Strip out what you don’t need and modify (if you need to) what’s left.

answered Apr 18, 2012 at 2:34

Jon Crowell's user avatar

Jon CrowellJon Crowell

21.5k14 gold badges88 silver badges110 bronze badges

Do a quick ‘record macro’ to see the color number associated with the color you’re looking for (yellow highlight is 65535). Then erase the code and put

Sub Name()
Selection.Interior.Color = 65535 '(your number may be different depending on the above)
End Sub

answered Mar 4, 2020 at 15:07

Matt G's user avatar

1

or alternatively you could not bother coding for it and use the ‘conditional formatting’ function in Excel which will set the background colour and font colour based on cell value.

There are only two variables here so set the default to yellow and then overwrite when the value is greater than or less than your threshold values.

answered Dec 30, 2008 at 12:34

It doesn’t work if you use Function, but works if you Sub. However, you cannot call a sub from a cell using formula.

answered Mar 22, 2015 at 18:08

user4700453's user avatar

0

Заливка ячеек по двойному клику

ant6729

Дата: Воскресенье, 04.05.2014, 16:56 |
Сообщение № 1

Группа: Проверенные

Ранг: Ветеран

Сообщений: 533


Репутация:

2

±

Замечаний:
40% ±


Excel 2010

[vba]

Код

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
ActiveCell.Interior.ColorIndex = 44
ActiveCell.Interior.ColorIndex = 30
ActiveCell.Interior.ColorIndex = 19
ActiveCell.Interior.ColorIndex = 36
Cancel = True
End Sub

[/vba]

Нужно, чтобы кликая дважды на ячейку, ее цвет становился такой-то, потом кликая по ней дважды, он становился такой-то, потом кликая по ней же дважды такой-то, и еще раз кликая дважды — такой-то.
Надеюсь, идея понятна. У меня все время последний появляется 36 цвет.
Почему — не знаю. Помогите разобраться.

Сообщение отредактировал Serge_007Воскресенье, 04.05.2014, 18:05

 

Ответить

RAN

Дата: Воскресенье, 04.05.2014, 17:13 |
Сообщение № 2

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

Потому, что последним стоит 36 цвет, а удосужиться объяснить Excel, сколько раз вы по ячейке потоптались, вы не соизволили.


Быть или не быть, вот в чем загвоздка!

 

Ответить

ant6729

Дата: Воскресенье, 04.05.2014, 17:30 |
Сообщение № 3

Группа: Проверенные

Ранг: Ветеран

Сообщений: 533


Репутация:

2

±

Замечаний:
40% ±


Excel 2010

[vba]

Код

Sub StartDoubleClick()
Application.OnDoubleClick = «MyDoubleClickMacro»
End Sub

Sub StopDoubleClick()
Application.OnDoubleClick = «»
End Sub

Sub MyDoubleClickMacro()
If Selection.Address = «$C$7» Then
Select Case ActiveCell.Value
Case «Red»
ActiveCell.Value = «Green»
Case «Green»
ActiveCell.Value = «Blue»
Case Else
ActiveCell.Value = «Red»
End Select
End If
End Sub

[/vba]

Ну, я искал тут, как человек объяснял Excel про повторения. Не понял. Case else после каждой строчки ставить что-ли…

Сообщение отредактировал Serge_007Воскресенье, 04.05.2014, 18:05

 

Ответить

RAN

Дата: Воскресенье, 04.05.2014, 17:37 |
Сообщение № 4

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

Case else после каждой строчки ставить что-ли…

Если красный, то зеленый
Если зеленый, то синий
Если ни рыба. ни мясо, то серобуромалиновый
Вам точно поможет Choose.


Быть или не быть, вот в чем загвоздка!

 

Ответить

ant6729

Дата: Воскресенье, 04.05.2014, 18:02 |
Сообщение № 5

Группа: Проверенные

Ранг: Ветеран

Сообщений: 533


Репутация:

2

±

Замечаний:
40% ±


Excel 2010

[vba]

Код

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
ActiveCell.Interior.ColorIndex = Choose(«44», «30», «19», «36»)
Cancel = True
End Sub

[/vba]

Может, пример какие-то есть, я сам хотел бы догнать, как делать выбор

Сообщение отредактировал Serge_007Воскресенье, 04.05.2014, 18:04

 

Ответить

RAN

Дата: Воскресенье, 04.05.2014, 18:26 |
Сообщение № 6

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

Будет пример, будет пример.
PS О не правильном синтаксисе функции молчок.


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RANВоскресенье, 04.05.2014, 18:29

 

Ответить

Alex_ST

Дата: Воскресенье, 04.05.2014, 22:15 |
Сообщение № 7

Группа: Друзья

Ранг: Участник клуба

Сообщений: 3176


Репутация:

604

±

Замечаний:
0% ±


2003

Сделал 8 цветов ТОЛЬКО ДЛЯ ТОГО, чтобы показать принцип, дальше устал :)
[vba]

Код

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
      Cancel = True
      With Target.Interior
          Select Case .ColorIndex
          Case xlNone: .ColorIndex = 1
          Case 1: .ColorIndex = 2
          Case 2: .ColorIndex = 3
          Case 3: .ColorIndex = 4
          Case 4: .ColorIndex = 5
          Case 5: .ColorIndex = 6
          Case 6: .ColorIndex = 7
          Case 7: .ColorIndex = 8
          Case 8: .ColorIndex = 9
          Case Else: .ColorIndex = xlNone
          End Select
      End With
End Sub

[/vba]
или так:[vba]

Код

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
      Cancel = True
      With Target.Interior
          Select Case .Color
          Case vbWhite: .Color = vbBlack
          Case vbBlack: .Color = vbRed
          Case vbRed: .Color = vbGreen
          Case vbGreen: .Color = vbYellow
          Case vbYellow: .Color = vbBlue
          Case vbBlue: .Color = vbMagenta
          Case vbMagenta: .Color = vbCyan
          Case vbCyan: .Color = vbWhite
          Case Else: .Color = vbWhite
          End Select
      End With
End Sub

[/vba]но вообще-то это и в самом деле маразм так цвета определять…
По-хорошему надо либо цвета в нужном порядке в Public-словарь загнать и оттуда считывать, либо (если устраивает встроенный порядок следования) просто в цикле .Colorindex = .Colorindex +1 устанавливать цвета.



С уважением,
Алексей
MS Excel 2003 — the best!!!

Сообщение отредактировал Alex_STПонедельник, 05.05.2014, 09:18

 

Ответить

ant6729

Дата: Понедельник, 05.05.2014, 14:29 |
Сообщение № 8

Группа: Проверенные

Ранг: Ветеран

Сообщений: 533


Репутация:

2

±

Замечаний:
40% ±


Excel 2010

Спасибо, с цветами понятно)
А какой принцип, если бы слова нужно было менять?
[vba]

Код

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
     Cancel = True
     With Target.ActiveCell
         Select Case .ActiveCell
         Case 1: .ActiveCell = «Кот»
         Case 2: .ActiveCell = «Сметана»
         Case 3: .ActiveCell = «Рыба»
         Case Else: .ActiveCell.Value = xlNone
         End Select
     End With
End Sub

[/vba]

 

Ответить

RAN

Дата: Понедельник, 05.05.2014, 14:43 |
Сообщение № 9

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

А какой принцип, если бы слова нужно было менять?

Если принцип (алгоритм) написания кода — он простой. Берем шило, меняем на мыло. Способов масса. В т.ч и тот, что вы выложили.

А вот принцип, по которому определяется, какое шило на какое мыло менять — сие есть ваша большая тайна.


Быть или не быть, вот в чем загвоздка!

 

Ответить

Alex_ST

Дата: Понедельник, 05.05.2014, 15:09 |
Сообщение № 10

Группа: Друзья

Ранг: Участник клуба

Сообщений: 3176


Репутация:

604

±

Замечаний:
0% ±


2003

ant6729,
1. В обработчике события Worksheet_BeforeDoubleClick Target.ActiveCell — это «масло масляное», т.к. при даблклике ячейка не активной быть не может.
2. Вы с использованием декларации With — End With всё-таки познакомились бы deal
с чего это вдруг после объявления With Target.ActiveCell у Вас появляется .ActiveCell ?
Свойством умолчанию у ActiveCell является Value
3. С чего это вдруг у Вас в Case Else: ActiveCell пытается присвоиться Value = xlNone — это же константа Excel’я — цифра -4142, соответствующая отсутствию заливки ячейки.
4. Вообще-то коты, рыба и сметана никакого отношения к теме «Заливка ячеек по двойному клику не имеют», т.к. это не цвета. так что здесь это оффтоп. А для учёбы есть другие разделы форума.

Чтобы закончить урок по раскрашиванию котов :) всё-таки отвечу на оффтопный вопрос:
[vba]

Код

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
     Cancel = True
     With Target
         Select Case .Value
         Case «Рыба»: .Value = «Кот»
         Case «Кот»: .Value = «Сметана»
         Case «Сметана»: .Value = «Рыба»
         Case Else: .Value = «Кот»
         End Select
     End With
End Sub

[/vba]



С уважением,
Алексей
MS Excel 2003 — the best!!!

 

Ответить

ant6729

Дата: Понедельник, 05.05.2014, 15:40 |
Сообщение № 11

Группа: Проверенные

Ранг: Ветеран

Сообщений: 533


Репутация:

2

±

Замечаний:
40% ±


Excel 2010

Спасибо еще раз))

 

Ответить

krosav4ig

Дата: Понедельник, 05.05.2014, 19:11 |
Сообщение № 12

Группа: Друзья

Ранг: Старожил

Сообщений: 2346


Репутация:

989

±

Замечаний:
0% ±


Excel 2007,2010,2013

а можно так?

[vba]

Код

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
      colors = Array(vbWhite, vbBlack, vbRed, vbGreen, vbYellow, vbBlue, vbMagenta, vbCyan, vbWhite)
      Cancel = True
      With Target.Interior
          For i = 0 To UBound(colors)
              If .Color = colors(i) Then
                  .Color = colors(i + 1)
                  Exit For
              ElseIf i = UBound(colors) Then .Color = colors(0)
              End If
          Next
      End With
End Sub

[/vba]

и так

[vba]

Код

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
      Words = Array(«Рыба», «Кот», «Сметана», «Рыба»)
      Cancel = True
      With Target
          For i = 0 To UBound(Words)
              If .Value = Words(i) Then
                  .Value = Words(i + 1)
                  Exit For
              ElseIf i = UBound(Words) Then .Value = Words(1)
              End If
          Next
      End With
End Sub

[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4igПонедельник, 05.05.2014, 19:11

 

Ответить

Alex_ST

Дата: Понедельник, 05.05.2014, 20:40 |
Сообщение № 13

Группа: Друзья

Ранг: Участник клуба

Сообщений: 3176


Репутация:

604

±

Замечаний:
0% ±


2003


а я разве не об этом примерно писал?

цвета в нужном порядке в Public-словарь загнать и оттуда считывать

Но, судя по уровню владения VBA топик-стартера, говорить про циклы, массивы, а тем более — словари, не стоило :)



С уважением,
Алексей
MS Excel 2003 — the best!!!

 

Ответить

krosav4ig

Дата: Вторник, 06.05.2014, 15:47 |
Сообщение № 14

Группа: Друзья

Ранг: Старожил

Сообщений: 2346


Репутация:

989

±

Замечаний:
0% ±


Excel 2007,2010,2013

Alex_ST, о том самом :)
Просто я исходя из уровня владения VBA топик-стартера решил все-таки написать пример реализации предложенного вами алгоритма, к тому же при использовании цикла в решении этой задачи есть пара нюансов, которые могут ввести в ступор новичка в программировании. В данном случае это невозможность использования обычного Else и необходимость выхода из цикла при срабатывании условия. Ну вот как-то так :) .

ant6729, я бы вам посоветовал для начала изучить синтаксис основных конструкций vba, типы данных и объектную модель excel (с общими сведениями объектной модели можно ознакомится по ссылке), на форуме есть раздел, где можно скачать справочники по excel и vba.


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

 

Ответить

Alex_ST

Дата: Вторник, 06.05.2014, 16:10 |
Сообщение № 15

Группа: Друзья

Ранг: Участник клуба

Сообщений: 3176


Репутация:

604

±

Замечаний:
0% ±


2003

Ну, чему я в первую очередь всегда пытаюсь научить новичков, так это использовать Option Explicit в случае если они в самом деле новички, а не «зубры» и хотят быть более-менее уверены в точности результатов работы макросов.



С уважением,
Алексей
MS Excel 2003 — the best!!!

Сообщение отредактировал Alex_STВторник, 06.05.2014, 16:10

 

Ответить

Like this post? Please share to your friends:
  • Нет закладки с листами excel
  • Нет закладки вид в word
  • Нет доступных макросов в excel
  • Нет доступа обратитесь к администратору excel при сохранении
  • Нет доступа к ячейке excel