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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2009, 20:28   #11
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
И заморочка с сертификатами
Что ещё за сертификаты? Не надо с ними бороться - они Вам вряд ли понадобятся.Не обращайте на них внимания.

Цитата:
чтобы этот макрос при определенных условиях сам запускался
При каких условиях?
В модуле книги можно указать, при каких событиях запускать макрос:
Код:
Private Sub Workbook_Open()
    ' срабатывает при открытии файла
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    ' срабатывает при активации листа
End Sub
И т.д. и т.п.

Если надо архивировать всю книгу - примеры кода можно посмотреть здесь:
http://www.programmersforum.ru/showp...90&postcount=2

Если только диапазон ячеек, или лист, - то здесь:
http://www.programmersforum.ru/showp...63&postcount=5

Можете выложить получившийся код - подправим под Ваши нужды.
EducatedFool вне форума Ответить с цитированием
Старый 24.05.2009, 07:43   #12
hamlook
Пользователь
 
Регистрация: 22.05.2009
Сообщений: 85
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Что ещё за сертификаты? Не надо с ними бороться - они Вам вряд ли понадобятся.Не обращайте на них внимания.
Что то про цифровую подпись (из серии про безопасность). Или можно ставить смело низкий уровень (в 2003-м)?

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
При каких условиях?
Мне надо по аналогии с фунцией ЕСЛИ.
ЕСЛИ в ячейке определенное значение, то пуск макроса
hamlook вне форума Ответить с цитированием
Старый 24.05.2009, 10:00   #13
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
ЕСЛИ в ячейке определенное значение, то пуск макроса
Зависит от того, как изменяется это значение.
Если автоматически (в ячейке стоит формула), то так:
Код:
Private Sub Worksheet_Calculate()
    if [e2]>5 then Макрос1
End Sub
http://www.programmersforum.ru/showthread.php?t=39616
http://www.programmersforum.ru/showthread.php?t=35747


Если изменяете содержимое ячейки вручную, то так:
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = [e2].Address Then  if [e2]>5 then Макрос1
End Sub
http://www.programmersforum.ru/showthread.php?t=49237
http://www.programmersforum.ru/showthread.php?t=33393

В обоих примерах Макрос1 - название запускаемого макроса.
Условие запуска - значение ячейки e2 > 5
EducatedFool вне форума Ответить с цитированием
Старый 24.05.2009, 20:15   #14
hamlook
Пользователь
 
Регистрация: 22.05.2009
Сообщений: 85
По умолчанию

Большое спасибо.
Буду разбиратся что к чему.
hamlook вне форума Ответить с цитированием
Старый 13.06.2009, 14:45   #15
hamlook
Пользователь
 
Регистрация: 22.05.2009
Сообщений: 85
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Зависит от того, как изменяется это значение.
Если автоматически (в ячейке стоит формула), то так:
Код:
Private Sub Worksheet_Calculate()
    if [e2]>5 then Макрос1
End Sub
У меня с этим кодом макрос зацикливается. Только у меня условие [e2]=5. Вроде все делает правильно, но в конце не останавливается и начинает заново. И так пока не зависнет или не выдаст ошибку.
И еще вопросик. У меня два макроса на листе. Могу я сделать так?
Private Sub Worksheet_Calculate()
if [e2]=5 then Макрос1
if [f2]=5 then Макрос2
End Sub
hamlook вне форума Ответить с цитированием
Старый 13.06.2009, 14:58   #16
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
У меня с этим кодом макрос зацикливается
Это из-за того, что макрос изменяет значения ячеек, от которых зависит значение ячейки e2.

Попробуйте использовать такую конструкцию:
Код:
Sub Макрос1()
    Application.EnableEvents = False    ' отключаем обработку событий листа и книги
    Application.Calculation = xlCalculationManual    ' отключаем пересчёт формул
    On Error Resume Next
    
    ' сюда пишем основной код макроса
    
    Application.Calculation = xlCalculationAutomatic
    Application.EnableEvents = True
End Sub
Цитата:
У меня два макроса на листе. Могу я сделать так?
Да, конечно.
Но не забывайте про Application.EnableEvents = False и Application.Calculation = xlCalculationManual
EducatedFool вне форума Ответить с цитированием
Старый 13.06.2009, 16:05   #17
hamlook
Пользователь
 
Регистрация: 22.05.2009
Сообщений: 85
По умолчанию

Спасибо. Попробую.
hamlook вне форума Ответить с цитированием
Старый 14.06.2009, 16:31   #18
hamlook
Пользователь
 
Регистрация: 22.05.2009
Сообщений: 85
По умолчанию

Отлично! Все получилось!!!
Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Это из-за того, что макрос изменяет значения ячеек, от которых зависит значение ячейки e2.
Макрос никак не связан с е2. Но на эту ячейку влияет переменная фунция (Сегодня и Час). Может поэтому появлялась цикличность.

Огромнейшее СПАСИБО!!!
hamlook вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
создание автоматически обновляемой ссылки Ezzzquire Microsoft Office Excel 1 28.01.2008 07:46
Взять данные из таблицы Access Inbox БД в Delphi 2 04.07.2007 13:53
В combobox выбирать данные из списка таблицы (Access) Inbox БД в Delphi 1 15.06.2007 10:45
Отправлять данные из одной таблицы в другую Таня84 БД в Delphi 14 28.04.2007 23:23