Форум программистов «Весельчак У»
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
Начало
Наши сайты
Галерея
Весельчак У
Наша Вики
Хранилище
Проекты
Правила
Правила форума
Правила русского языка
Помощь
Поиск
Календарь
Почта
Войти
Регистрация
Форум программистов «Весельчак У»
>
Программирование
>
Общий
(Модератор:
Вад
) > Тема:
Помощь VBA в экселе
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Помощь VBA в экселе (Прочитано 16126 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Владимир
Гость
Помощь VBA в экселе
«
:
29-07-2007 10:50 »
Вот эта штука, в экселе при нажатии кнопки принт , после проверки не пусты ли ячейки должна их напечатаь а потом стереть содержимое, все это происходит, только сначала стирается а потом печатается а требуется наоборот, сначала напечатать а потом стереть
Private Sub WorkBook_BeforePrint(Cancel As Boolean)
' Тут лежит список ячеек для проверки
Let Line = "Камаз_совок!C3:C12"
Let Line_clr = "Камаз_совок!C3:C12"
Let cur_pos = 1
Let prev_pos = 1
Line = Line + ";"
Line_clr = Line_clr + ";"
' Пока не проверим все ячейки
While 1
' Добываем следующий кусок
cur_pos = InStr(prev_pos, Line, ";")
If cur_pos = 0 Then GoTo finish_search
Let ret = Mid(Line, prev_pos, cur_pos - prev_pos)
prev_pos = cur_pos + 1
' Это текущая страница?
Let truth = False
Let lst = Mid(ret, 1, InStr(1, ret, "!") - 1)
For Each sh In Windows(1).SelectedSheets
If sh.Name = lst Then
truth = True
Exit For
End If
Next
If truth Then
' Проверяем каждую ячейку в куске
For Each c In Range(ret)
c.Interior.Color = RGB(255, 210, 210)
If Len(c.Text) <= 0 Then
' Устанавливаем цвет
c.Interior.Color = RGB(255, 100, 200)
' Активируем ячейку (иногда вылетает)
c.Worksheet.Activate
c.Activate
Cancel = True
End If
Next c
End If
Wend
finish_search:
If Cancel = False Then
GoTo normal_exit
Else
GoTo abnormal_exit
End If
abnormal_exit:
MsgBox ("Ячейка не заполнена")
Cancel = True
Exit Sub
'
normal_exit:
' Пока не проверим все ячейки
cur_pos = 1
prev_pos = 1
While 1
' Добываем следующий кусок
cur_pos = InStr(prev_pos, Line_clr, ";")
If cur_pos = 0 Then GoTo absolut_exit_lol
Let ret = Mid(Line_clr, prev_pos, cur_pos - prev_pos)
prev_pos = cur_pos + 1
' Это текущая страница?
Let truth = False
Let lst = Mid(ret, 1, InStr(1, ret, "!") - 1)
For Each sh In Windows(1).SelectedSheets
If sh.Name = lst Then
truth = True
Exit For
End If
Next
If truth Then
' Проверяем каждую ячейку в куске
For Each c In Range(ret)
Let a = c.ClearContents()
'c.Interior.Color = RGB(0, 255, 0)
Next c
End If
Wend
absolut_exit_lol:
End Sub
«
Последнее редактирование: 29-07-2007 10:54 от Владимир
»
Записан
Sla
Команда клуба
Offline
Пол:
Re: Помощь VBA в экселе
«
Ответ #1 :
30-07-2007 05:56 »
WorkBook_BeforePrint - выполнить до печати
а такое WorkBook_AfterPrint существует?
Записан
Мы все учились понемногу... Чему-нибудь и как-нибудь.
Владимир
Гость
Re: Помощь VBA в экселе
«
Ответ #2 :
30-07-2007 07:20 »
Заменил Before на After оно просто только печатает и ничего больше вообще не делает
Записан
Sla
Команда клуба
Offline
Пол:
Re: Помощь VBA в экселе
«
Ответ #3 :
30-07-2007 07:48 »
до печати - готовишь страницу
после печати - очищаешь
я так думаю....
Записан
Мы все учились понемногу... Чему-нибудь и как-нибудь.
Владимир
Гость
Re: Помощь VBA в экселе
«
Ответ #4 :
30-07-2007 08:30 »
А после печати событие заканчивается по "End Sub" и дальше хоть что пиши оно не работает
Записан
Владимир
Гость
Re: Помощь VBA в экселе
«
Ответ #5 :
30-07-2007 09:01 »
Точнее не так, событие нажатия кнопки принт порождает инициализацию исполнения данного скрипта, после исполнения скрипта происходит выход из него и после этого печать и дальше хоть что пиши оно не работает
«
Последнее редактирование: 30-07-2007 09:26 от Владимир
»
Записан
HandKot
Молодой специалист
Offline
Re: Помощь VBA в экселе
«
Ответ #6 :
31-07-2007 05:35 »
сделайте свою кнопку для печаи и там вызывайте метод ThisWorkbook.PrintOut
Записан
I Have Nine Lives You Have One Only
THINK!
Владимир
Гость
Re: Помощь VBA в экселе
«
Ответ #7 :
31-07-2007 11:58 »
Цитата: HandKot от 31-07-2007 05:35
сделайте свою кнопку для печаи и там вызывайте метод ThisWorkbook.PrintOut
Надо именно по кнопке принт, поскольку на других компах придётся тоже создавать свою кнопку.
Мне не нужен способ обхода, мне нужна реализация именно таким образом, через кнопку принт, что бы это работало везде без предварительного создания дополнительных кнопок
Записан
HandKot
Молодой специалист
Offline
Re: Помощь VBA в экселе
«
Ответ #8 :
02-08-2007 12:57 »
ну тогда ничем не могу Вам помочь
отловить событие "конец печати" не могу
Есть предложение делать так:
1) Befor_Print - форматирование перед печатью
2) Удалять данные после печати по кнопке, а ее можно создавать при открытии книги
другой возможности пока не вижу
Записан
I Have Nine Lives You Have One Only
THINK!
Sla
Команда клуба
Offline
Пол:
Re: Помощь VBA в экселе
«
Ответ #9 :
02-08-2007 13:05 »
можно, например кнопку "рисовать" при открытии книги
Записан
Мы все учились понемногу... Чему-нибудь и как-нибудь.
Владимир
Гость
Re: Помощь VBA в экселе
«
Ответ #10 :
04-08-2007 18:14 »
Да нет, это всё пляски с бубном, так у меня есть, надо именно без чудес, нажал на кнопку принт либо выбрал в меню печать и процес пошёл
Записан
HandKot
Молодой специалист
Offline
Re: Помощь VBA в экселе
«
Ответ #11 :
08-08-2007 05:17 »
Цитата: Владимир от 04-08-2007 18:14
Да нет, это всё пляски с бубном, так у меня есть, надо именно без чудес, нажал на кнопку принт либо выбрал в меню печать и процес пошёл
ну по другогму нельзя.
т.е до печати можно выполнить свои действия (Befor_Print), а вот отследить окончание печати (если запускаете печать не кодом) уже нельзя и поэтому создайте кнопку и по ней делайте те действия, которые нужно делать после печати
можно конечно заменить пункт меню "печать", но тогда могут возникнуть проблемы с печатью других книг
Записан
I Have Nine Lives You Have One Only
THINK!
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Форум программистов «Весельчак У»
>
Программирование
>
Общий
(Модератор:
Вад
) > Тема:
Помощь VBA в экселе
Загружается...