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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.11.2009, 23:52   #31
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Цитата:
Сообщение от doober Посмотреть сообщение
Понятно,надо выбирать максимальный день проверяемого месяца,и проверять ячейка желтая или нет?
В точку. Все правильно...
Только весь месяц а не дату. 31 ячейка
segail вне форума Ответить с цитированием
Старый 26.11.2009, 00:25   #32
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Цитата:
Сообщение от doober Посмотреть сообщение
Учтите такой фактор,как разное количество дней в месяце,особенно февраль,высокосный год
Вам надо не отсчет дней делать,а проверять на последнюю дату соответствующего месяца
прибавление 31 не всегда верно
Не обращайте на высокосный год и и разное количество дат в месяце(это другой код). Я брал для цвета каждого месяца, 31 день 31 ячейка (чтобы не замарачиваться). Здесь все проще условие должно исходить от If Cells(i, 27).Text = ComboBox1.Text Then это строка первой даты, и от отталкиваясь от данной ячейки переходить на 14 столбец данной строки ( это фактическая дата, где необходимо производить проверку)
p/s
Возможно я усложнил, и сделать можно проще…
?

Последний раз редактировалось segail; 26.11.2009 в 00:46.
segail вне форума Ответить с цитированием
Старый 26.11.2009, 01:12   #33
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Цитата:
Сообщение от Teslenko_EA Посмотреть сообщение
Здравствуйте segail, приветствую всех участников обсуждения.
мнение:
Давно уже придуманы способы рационального хранения и обработки данных, но "благодаря" возможности которую предоставляет Excel, никто не допускает мысли о том, что стоит отказаться от "хранения" данных в документе более похожем на отчет, чем на "хранилище", и обсуждение этой темы это подтверждает.
If ....Interior.Color <> 65535 Then это субъективная оченка, я сомневаюсь, что глаз пользователя определит различие в цветах если установит .Color = 65522, а какой будет результат проверки(?) все понимают - ошибочный. Но тем не менее из за легкости создания подобных конструкций в Excel, мы смиряемся и с низким уровнем надёжности, и с огромной вероятностью ошибок. Конечно проще найти и устранить ошибку, чем создавать конструкцию не допускающую их возникновения.
Печально.
Евгений.
Красиво изложено. А где решение?

Пока не видал программ в виде учетов и отчетов, которые удовлетворяют простых пользователей на производстве.
Так как сам работаю в этой системе. Все на уровне теории НО НЕ ПРАКТИКИ.

p/s
Вот поэтому практики пытаются стать теоретиками…

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

Во вложении учебный проект в Access
Просто посмотрите на базу на отчеты.Я думаю немного поменяете мнение
Вложения
Тип файла: rar Борей 2007.rar (417.2 Кб, 5 просмотров)
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 26.11.2009, 02:32   #35
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Зачем Access?
Все переделывать?
Ребята вставьте код
Код:
If Cells(i+30, 14).Interior.Color <> 65535 Then
MsgBox " Инвентаризация не произведена.", 16, "Запрет ввода"
В

Код:
Private Sub CommandButton1_Click()
    
    Dim i As Integer
    
    For i = 1 To 1000
            
        If Cells(i, 27).Text = ComboBox1.Text Then
            
        If TextBox1 = "" Or ComboBox1.Text = "Итого" Then
        MsgBox "Не корректный ввод данных.    ", 16, "Запрет ввода"
        TextBox1 = ""
        Exit Sub
       
      Else
        
        If CDbl(TextBox1.Text) > Round((Cells(i + 34, 21) * -1), 0) Then
        MsgBox "ВНИМАНИЕ!" & vbCrLf & "" & vbCrLf & "1. Объем списания не должен превышать объема недостачи." & vbCrLf & "2. Объем прибыли не покрывается объемом списания.", 16, "Запрет ввода"
        TextBox1 = ""
        Exit Sub

        End If
        End If
    
    
    
    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)
        
        End If
    Next
End Sub
segail вне форума Ответить с цитированием
Старый 26.11.2009, 02:59   #36
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Половина проекта Excel, а теперь в Access? Не вижу смысла. Тем более Access не дает того что надо. Сокращенный и зажатый отчет. Например движение ГСМ (химия, физика) он это даст. В Excel можно что-то скроить.
segail вне форума Ответить с цитированием
Старый 26.11.2009, 19:34   #37
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Здравствуйте.

Высылаю часть файла EducatedFool & doober. Необходимо обратить на код кнопки ОК.
1. Для примера я поставил заливку ячеек в Октябре и Ноябре месяце.
2. Для того чтобы открыть нужный месяц, его необходимо выбрать из раскрывающегося списка.
3. Я сознательно ввел в Ноябре месяце недостачу (cм. пункты 01. 02. 03. в низу каждого месяца) а в Октябре хоть ячейки и желтые, но ни каких показателей нет, какбы на данном месяце инвентаризация производилась но показание дают 0 , но ввод данных не может быть произведен, так как в силу вступают другие условия кнопки ОК.
Если что не ясно я дополню.
Остальное было сказано выше
Вложения
Тип файла: rar othcet.rar (50.3 Кб, 9 просмотров)
segail вне форума Ответить с цитированием
Старый 26.11.2009, 20:01   #38
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте segail.
Я высказал своё мнение, что есть "способы рационального хранения и обработки данных" и пренебрегать чужим опытом что бы учиться на собственных ошибках не стоит. Это ни в коем случае не рекомендачия отказаться от применения Excel, который в настоящее время занимает лидирующее положение среди электронных таблиц. Корпоративные задачи, решающиеся с применением таких продуктов как SAP R3, интегрируют в свои конструкции возможность создания таблиц Excel, для получения максимяльного эффекта от использования его возможностей.
"Небольшую" конструкцию для решения текущей задачи, конечно практичнее решать с применением знакомого Excel и с использованием накопленых наработок. Но Ваш вариант, напомнил мне фильм, философскую комедию - "Кин Дза Дза", там статус человека определялся цветом его штанов.
На вопрос "А где решение?" отвечу - решение должны принять Вы.
Удачи Вам.
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 26.11.2009, 20:13   #39
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Я понял Вашу иронию но вышло так что нужен цвет.
Может Вы не видите, но мы давно живем в мире "Кин Дза Дза". Это комедия пародия на нашу жизнь.

Ребята кто поможет, файл скинул.
Смотрите выше.
segail вне форума Ответить с цитированием
Старый 27.11.2009, 00:37   #40
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Я же продполагал,что все зависит от количества дней в месяце
В соседнюю ячейку с именем месяца проставляете количество дней в этом месяце,и без проблем проверяете последний день месяца,другой альтернативы нет
Например в Cells(376, 27) ="Ноябрь" , Cells(376, 28)=30 ,значит Cells(405, 1) =30.11.2009 ,мы смотрим на желтизну Cells(405, 14)

Код:
Private Sub CommandButton1_Click()

Dim i ,дней_в_месяце As Integer
For i = 1 To 1000
            
If Cells(i, 27).Text = ComboBox1.Text Then
дней_в_месяце=Cells(i, 28).Value
If Cells(i+дней_в_месяце-1, 14).Interior.Color <> 65535 Then
MsgBox " Инвентаризация не произведена.", 16, "Запрет ввода"
Exit Sub
Else
‘…
End If
End If
Next
End Sub
Анализ,обработка данных Недорого
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