Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.11.2009, 21:30   #1
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию Условие для цвета

Здравствуйте.
Подскажите как выполнить данный код правильно?
Нет определенности, на какой строчки i ячейка или ячейки или весь столбец 14 (31 ячеек, столбца 14 включительно), могут быть желтыми. Если не найдена ячейка желтого цвета выполняется данное условие. И если есть хоть одна ячейка желтого цвета, то выполняется другое условие.
Я думаю, что не правильно указан диапазон проверяемых ячеек Cells(i+30, 14)

Код:
Private Sub CommandButton1_Click()

Dim i As Integer
For i = 1 To 444
            
If Cells(i, 27).Text = ComboBox1.Text Then

If Cells(i+30, 14).Interior.Color <> 65535 Then
MsgBox " Инвентаризация не произведена.", 16, "Запрет ввода"
Exit Sub
Else
‘…
End If
End If
Next
End Sub

Последний раз редактировалось segail; 25.11.2009 в 17:37.
segail вне форума Ответить с цитированием
Старый 24.11.2009, 22:33   #2
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

А в чем ошибка, что не так работает?
motorway вне форума Ответить с цитированием
Старый 24.11.2009, 22:57   #3
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Проверка вашего 14 столбца с первой по 444 строку
Если есть желтая ячейка возвращает True


Код:

Function Желтый () As Boolean

 Set ra = Range("N1:N" & 444)
   For Each cell In ra.Cells
      
       
        If cell.Interior.Color = 65535 Then
   
     
    Желтый = True: Exit Function
    
        
     End If
       
    Next cell
    
    
     Желтый = False
    
End Function

Проверка MsgBox Желтый
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 25.11.2009, 17:07   #4
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Попробую объяснить по своему.
Код:
Cells(i, 27).Text
это название месяца, текст которого должен совпадать с
Код:
ComboBox1.Text
. При выполнение данного условия попадаем на нужный месяц.
Далее в действие вступает другое условие. От найденной
Код:
Cells(i, 27).Text
переходим на столбец 14 и проверяем 31 ячейку на желтый цвет
Код:
If Cells(i+30, 14).Interior.Color <> 65535 Then
если есть хоть одна ячейка желтого цвета выполняется нужный код, а если нету то выходит сообщение.

Необходимо проверять 31 ячейку на желтый цвет нужного месяца, а не все 444 ячейки

Последний раз редактировалось segail; 25.11.2009 в 17:55.
segail вне форума Ответить с цитированием
Старый 25.11.2009, 19:21   #5
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

А можно одним глазом глянуть на лист,почему именно 31 ячейка,а если декабрь,тогда 32.
Непонятно,а если
Cells(i, 27).Text = ComboBox1.Text
сопадет при I=100
Может номер ячейки привязать к проверяемому месяцу.
Надо файл смотреть
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 25.11.2009, 19:52   #6
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Файл объемный. Могу скинуть лично Вам. Если разберетесь.
А 31 ячейка, значит я ошибся, для этого и зашел на форум со своим вопросом. Как я понял надо брать 32. У меня не зависимо от месяца на каждый месяц 31 ячейка.
segail вне форума Ответить с цитированием
Старый 25.11.2009, 19:56   #7
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Привязать нужно к Cells(i, 27).Text = ComboBox1.Text, а проверять 14 столбец.
А как не знаю
segail вне форума Ответить с цитированием
Старый 25.11.2009, 20:03   #8
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Скорее всего, нужно сделать еще один цикл с другой переменной - например, j
motorway вне форума Ответить с цитированием
Старый 25.11.2009, 20:14   #9
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Цитата:
Сообщение от segail Посмотреть сообщение
Привязать нужно к Cells(i, 27).Text = ComboBox1.Text, а проверять 14 столбец.
А как не знаю
Киньте файл,а то кофе уже закончилось,гадать нечем
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 25.11.2009, 20:16   #10
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Цитата:
Сообщение от motorway Посмотреть сообщение
Скорее всего, нужно сделать еще один цикл с другой переменной - например, j
Как сделать? Код есть смотрите выше. Как его исправить?
segail вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Условие для ячейки segail Microsoft Office Excel 31 23.09.2009 21:33
Условие для TextBox segail Microsoft Office Excel 7 02.08.2009 23:15
Условие для макроса sergiksergik Microsoft Office Excel 8 23.05.2009 20:54
Условие для файлов Nemesisking Общие вопросы Delphi 11 30.01.2009 09:20