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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 23.11.2008, 13:01   #11
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

во вложении вариант на формулах (для одного листа, для второго можете сделать самостоятельно, собственно, необходимо только исправить условия отбора в формулах столбца 9).
начальник как откроет, так все время все видно.
в 9, 10 столбце определяется какая строка должна быть показана и в каком виде.
Вложения
Тип файла: rar Прогноз заказов.rar (10.5 Кб, 9 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 23.11.2008 в 13:05.
IgorGO вне форума
Старый 23.11.2008, 13:06   #12
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
но может статься так, что начальство откроет таблицу, но не запустит макрос, и на листах 50-70% и 71-100% будет отображаться старая информация
Добавил в код процедуру, которая перед каждым сохранением книги производит пересчёт листов. Теперь при открытии файла Вы всегда будете видеть свежую информацию.

А вот, собственно, что требовалось добавить:
Код:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Main
End Sub
Цитата:
Поменял код, как Вы писали в сообщении №4.
На листе с верояностями 50-70% все просто великоллепно, на 71-100% не считает сумму на этом листе, буду пробовать дальше!!
Смотрите код из файла, прикреплённого к сообщению #9
Туда уже внесены все изменения.

Цитата:
чтоб при запуске всплывала окошко "запусти макрос" и кнопка "ОК".
Теперь это уже не требуется.

Последний раз редактировалось EducatedFool; 23.11.2008 в 13:10.
EducatedFool вне форума
Старый 23.11.2008, 13:17   #13
nadenenko_s
Пользователь
 
Регистрация: 22.11.2008
Сообщений: 10
По умолчанию

IgorGO, EducatedFool,
большое Вам спасибо за помощь!!!
Всё работает!!!
EducatedFool, остановился на Вашем варианте!
nadenenko_s вне форума
Старый 23.11.2008, 13:28   #14
nadenenko_s
Пользователь
 
Регистрация: 22.11.2008
Сообщений: 10
По умолчанию

EducatedFool,
я не совсем понимаю почему так...я добавил пару позиций (выделено красным шрифтом), но они не переносятся на листы с вероятностями
Вложения
Тип файла: rar Прогноз заказов2.2.rar (16.4 Кб, 8 просмотров)
nadenenko_s вне форума
Старый 23.11.2008, 13:48   #15
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

строка IsBlank = (Len(Trim$(ro.Cells(1))) = 0) And (Len(Trim$(ro.Cells(2))) = 0 And (Len(Trim$(ro.Cells(4)))) = 0)
определяет пустые строки.

Раньше было так - если в первом и втором столбце пусто, строка считается пустой.

Теперь (см. строку выше) назначено условие: строка считается пустой, если в первом , во втором и в четвёртом столбце пусто.

Я изначально просто подумал, что товар по каталогу - обязательная к заполнению ячейка...

Теперь всё вроде работает как надо.

Найдёте недоработки - обращайтесь, исправим


PS: вышеприведённую строку правильно было бы написать так:
IsBlank = (Len(Trim$(ro.Cells(1))) = 0) And (Len(Trim$(ro.Cells(2))) = 0) And (Len(Trim$(ro.Cells(4))) = 0)

В спешке напутал со скобками...
Исправьте в коде, там 2 таких строки.
Вложения
Тип файла: rar Прогноз заказов2.2.rar (17.5 Кб, 8 просмотров)

Последний раз редактировалось EducatedFool; 23.11.2008 в 13:53.
EducatedFool вне форума
Старый 23.11.2008, 13:52   #16
nadenenko_s
Пользователь
 
Регистрация: 22.11.2008
Сообщений: 10
По умолчанию

Спасибо Вам за помощь и разъяснения!!!!
Теперь действительно все работает просто СУПЕР!!!
nadenenko_s вне форума
Старый 23.11.2008, 14:19   #17
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Вот более корректный вариант макроса.

Устранена проблема с неправильной установкой высоты отдельных строк
Вложения
Тип файла: rar Прогноз заказов2.3.rar (17.3 Кб, 10 просмотров)
EducatedFool вне форума
Старый 23.11.2008, 14:34   #18
nadenenko_s
Пользователь
 
Регистрация: 22.11.2008
Сообщений: 10
По умолчанию

Еще раз спасибо!!

EducatedFool, неудобно Вас напрягать, но к вопросу об информационном окне.
Меня не покидает мысль, что кто то из многочисленных сотрудников начнет корректировать скажем не тот лист, а потом будут непонятки почему не работает...
Вобщем то конечно можно просто написать инстукцию по пользованию, но боюсь ее не все прочитают..
Можно всеж придумать какое то всплывающее при запуске окно, я б там обозначил, что корректировки надо вносить в токой-то лист. обновление наступает после закрытия файла?
nadenenko_s вне форума
Старый 23.11.2008, 14:48   #19
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Можно всеж придумать какое то всплывающее при запуске окно, я б там обозначил, что корректировки надо вносить в токой-то лист.
В тот же модуль, где у Вас находится код

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Main
End Sub



добавьте процедуру, срабатывающую каждый раз при открытии файла.

Например, так:

Код:
Private Sub Workbook_Open()
    MsgBox "Убедительная просьба вносить изменения только в лист с названием    'Прогноз оптимистичный'." _
           & vbCrLf & vbCrLf & "Изменения во всех остальных листах на имеют смысла," & vbCrLf & _
           "так как информация на этих листах формируется автоматически при сохранении файла.", 48, "Внимание! Важная информация!"
    On Error Resume Next: ThisWorkbook.Worksheets(3).Activate
End Sub
Цитата:
обновление наступает после закрытия файла?
Обновление происходит ПЕРЕД СОХРАНЕНИЕМ файла.

Можно запускать обновление по самым разным событиям Excel (например, даже после выделения очередной ячейки). Но, мне кажется, это уже лишнее.

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

Цитата:
Меня не покидает мысль, что кто то из многочисленных сотрудников начнет корректировать скажем не тот лист, а потом будут непонятки почему не работает...
Можете поставить защиту на листы, которые не требуется изменять.
Макрос будет снимать эту защиту перед копированием, и устанавливать вновь после завершения обработки листов.

Последний раз редактировалось EducatedFool; 23.11.2008 в 14:50.
EducatedFool вне форума
Старый 23.11.2008, 14:55   #20
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Для удобства при формировании своего сообщения можете воспользоваться программой MsgBox Generator
Вложения
Тип файла: rar MsgBox Generator.rar (34.6 Кб, 12 просмотров)
EducatedFool вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автоматический перенос данных из общего листа в другие InvoiceControl Microsoft Office Excel 3 02.10.2008 13:21
Excel-перенос иформации с одного листа в другой согласно условия ЛюдмилаЗ Microsoft Office Excel 2 28.05.2008 12:38
Помогите с сортировкой radist Паскаль, Turbo Pascal, PascalABC.NET 5 23.04.2007 12:50