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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.11.2009, 22:17   #21
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Попробуйте следующий код:
там переменная nach обозначает строку, с которой начинается проверка.
Вы лучше знаете, чему она должна быть равна, но НЯП, либо i, либо для каждого месяца это строка, в которой первое число для данного месяца.
То есть задайте ее соотв. вашему файлу.

Код:
Private Sub CommandButton1_Click()

Dim i As Integer
For i = 1 To 444
            
If Cells(i, 27).Text = ComboBox1.Text Then
' nach - начало строки, с которой проверять
for j=nach to nach+31
If Cells(j+30, 14).Interior.Color <> 65535 Then
MsgBox " Инвентаризация не произведена.", 16, "Запрет ввода"
Exit Sub
Else
‘…
End If
next j
End If
Next
End Sub
motorway вне форума Ответить с цитированием
Старый 25.11.2009, 22:20   #22
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Цитата:
Сообщение от segail Посмотреть сообщение
Если что-то не ясно, то дополню.
я правильно понял,что в этом столбце может быть лишь одна ячейка желтая,или вообще такой быть не может,если не прошла инвентаризация
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 25.11.2009, 22:22   #23
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Добрый вечер Teslenko_EA
Color = 65522 Устанавливается другим кодом, и альтернативы для пользователя нет.
segail вне форума Ответить с цитированием
Старый 25.11.2009, 22:34   #24
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Цитата:
Сообщение от doober Посмотреть сообщение
я правильно понял,что в этом столбце может быть лишь одна ячейка желтая,или вообще такой быть не может,если не прошла инвентаризация
К сожалению нет. Пользователь может произвести инвентаризацию несколько раз, а может и каждый день, это его право. После инвентаризации на выбранную дату ячейка окрашивается в желтый цвет. (это код другой).
Может я заплутал, но мне кажется здесь все очень просто. Как Вы видите в коде есть условия, где постоянно выходят сообщения. Необходимо добавить еще одно сообщение (о чем говорилось выше)
segail вне форума Ответить с цитированием
Старый 25.11.2009, 22:37   #25
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Понятно,надо выбирать максимальный день проверяемого месяца,и проверять ячейка желтая или нет?
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 25.11.2009, 22:40   #26
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Составьте четкое словесное описание алгоритма того, что должно делаться. Тогда будет понятнее.
Я понял задачу так:
для каждой ячейки в диапазоне таком-то проверить в 30 ячейках другого диапазона (определяемого месяцем) наличие цвета. Или что-то не так?
motorway вне форума Ответить с цитированием
Старый 25.11.2009, 23:00   #27
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

После начало условия нахождения месяца месяца If Cells(i, 27).Text = ComboBox1.Text Then(это будет первый день месяца) и перейти на столбец 14.(это первый день месяца)
а от него проверить все ячейки в низ 31 на цвет. Если нет ячеек желтого цвета то сообщение, если есть то выполняется часть года (см выше)

Код:
    If MsgBox("ВНИМАНИЕ" & vbCrLf & vbCrLf & "Списание нефтепродуктов в пределах норм естественной убыли до установления факта недостачи запрещается." & vbCrLf & vbCrLf & "Списание производится только после выполнения инвентаризации и определения количества выявленных недостач." & vbCrLf & vbCrLf & "Данные инвентаризации и списание документально должны быть зафиксированы и заверены ответственными лицами, в противном случае списание является не действительным." & vbCrLf & vbCrLf & "Показателем проведения инвентаризации является ячейка окрашенная в желтый цвет." & vbCrLf & vbCrLf & "На данный момент производится списание объема недостачи в количестве " & TextBox1.Text & " л. на " & ComboBox1.Text & " месяц.   " & vbCrLf & vbCrLf & "Продолжить ввод данных?", _ 
vbYesNo Or 48, "Ввод данных разрешен") = vbYes Then GoTo wyhod
        Exit Sub
wyhod:
        Cells(i + 35, 21).Value = CDbl(TextBox1.Text)
Может я ошибаюсь

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

Попробуйте так: (если это не то, что нужно, то, значит, слишком заумно написали )

Код:
Private Sub CommandButton1_Click()

Dim i As Integer
For i = 1 To 444
            
If Cells(i, 27).Text = ComboBox1.Text Then
' nach - начало строки, с которой проверять
for j=i to i+31
If Cells(j+30, 14).Interior.Color <> 65535 Then
MsgBox " Инвентаризация не произведена.", 16, "Запрет ввода"
Exit Sub
Else
'...
End If
next j
End If
Next
End Sub
motorway вне форума Ответить с цитированием
Старый 25.11.2009, 23:16   #29
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Motorway я попробую, завтра сообщу. Спасибо Всем за терпение.

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

Учтите такой фактор,как разное количество дней в месяце,особенно февраль,высокосный год
Вам надо не отсчет дней делать,а проверять на последнюю дату соответствующего месяца
прибавление 31 не всегда верно
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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