Страницы: 1
RSS
Блокировка пересчета функции "сегодня". Или вставка даты макросом
 
Доброго времени суток!

У меня таблица (что-то, типо, календаря), естественно работает на основе функции "сегодня".
Так вот, т.к. в месяцах разное количество дней, Я прописал макрос, который прячет ненужные столбцы.
Ну и из-за того что "Сегодня" пересчитывается при каждом действии, то и макрос, соответственно, тоже срабатывает каждый рас. в следствии чего кнопка "отменить действие" не работает!

ВОПРОС!
1. Можно ли ограничить действие функции "Сегодня" тем, что оно пересчитается только при запуске. и не будет пересчитываться до закрытия книги?
или
2. Сделать так, что бы макрос сработал только при запуске и при нажатии кнопки "смена месяца" ?

Заранее благодарен!
 
Ответ
1. НЕТ
2. ДА.
Согласие есть продукт при полном непротивлении сторон
 
Как?
Уверен что на форуме эта тема обсуждалась, не поделитесь ссылкой?
Прочитал кучу статей ни чего похожего не нашёл((
Изменено: Hohlik - 07.06.2017 21:42:51
 
Цитата
Hohlik написал:
2. Сделать так, что бы макрос сработал только при запуске и при нажатии кнопки "смена месяца" ?
Ставьте срабатывание макроса на событие открытия книги, и на нажатие кнопки  "смена месяца" :)
 
Цитата
Hohlik написал:
1. Можно ли ограничить действие функции "Сегодня" тем, что оно пересчитается только при запуске. и не будет пересчитываться до закрытия книги?
Нет нельзя.
Можно отключит автоматический пересчет формул в книге. на вкладке формулы блок параметры вычислений, выбрать вручную.

Цитата
Hohlik написал:
Сделать так, что бы макрос сработал только при запуске
в модуль эта книга вставить ваш макрос. на событие Workbook_Open
Код
1
2
3
Private Sub Workbook_Open()
' ВАШ макрос
End Sub
Цитата
Hohlik написал:
и при нажатии кнопки "смена месяца" ?
ИЛИ
Создать кнопку, назначить макрос на нее.

Рад что смог помочь, Вам не заглядывая в файл-пример.
Изменено: Иван - 07.06.2017 08:49:00

Бессмысленно осмысливать смысл неосмысленными мыслями.
 
Я в VBA полный профан! Мне не так совет нужен, как помощь ))))
вот код
Код
1
2
3
Private Sub Worksheet_Calculate()
   Columns(45).Hidden = IIf([AS6] = 0, True, False)
End Sub

Надо что-бы, Этот код сработал при запуске программы
и при выборе месяца в поля со списком (элемент управления формы)
а всё оставшиеся время молчал!

Подскажите какими иероглифами обставить эту функцию, чтоб это чудо заработало???
Заранее благодарен!
 
Цитата
Hohlik написал:
Мне не так совет нужен, как помощь
Поместите ваш код в модуль книги, измените событие с Worksheet_Calculate() на Workbook_Open(), чтобы получилось примерно вот так:
Код
1
2
3
Private Sub Workbook_Open()
  Columns(45).Hidden = IIf([AS6] = 0, True, False)
End Sub
Цитата
Иван написал:
Рад что смог помочь, Вам не заглядывая в файл-пример.
Рад что смог помочь, Вам не заглядывая в файл-пример.

Бессмысленно осмысливать смысл неосмысленными мыслями.
 
Иван, на форуме негласное правило не помогать нарушителям. В данном случает ТС не оформляет код посредством кнопки <...>

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Спасибо большое!
Но у меня что-то не фурычит))
Я вставил этот код в "эта книга", при запуске программы выдает ошибку:

Compile error:
Ambiguous name detected: Workboor_Open
Пробовал удалять свой код с листа. Всё равно выдаёт ошибку
и что сделать что бы код срабатывал и при втором условии
Цитата
Hohlik написал:
и при выборе месяца в поля со списком (элемент управления формы)

Извините. Но задавать буду самые глупые вопросы))

Изменено: Hohlik - 05.09.2017 09:50:33
 
Цитата
JayBhagavan написал:
Иван , на форуме негласное правило не помогать нарушителям. В данном случает ТС не оформляет код посредством кнопки  
Что это значит?
 
Hohlik, посмотрите как код оформлен у Вас в сообщениях и как у Иван, например. Как оформлять сообщил ранее.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
JayBhagavan, понял, исправлюсь.
Цитата
Hohlik написал:
Что это значит?
Это значит, что при вставке кода, его необходимо оформить соответственно. На панели с кнопочками найдите кнопку "<...>" (она находится рядом с кнопкой которую, Вы нажали для цитирования) и вставьте туда ваш код в сообщении #6.
Так же Вам необходимо приложить файл пример, об этом я Вам намекал в своих сообщениях:
Цитата
Цитата Иван  написал:
Рад что смог помочь, Вам не заглядывая в файл-пример

Бессмысленно осмысливать смысл неосмысленными мыслями.
 
В общем вот!!

Это код
Код
1
2
3
4
5
Private Sub Worksheet_Calculate()
   Columns(45).Hidden = IIf([AS6] = 0, True, False)
   Columns(44).Hidden = IIf([AR6] = 0, True, False)
   Columns(43).Hidden = IIf([AQ6] = 0, True, False)
End Sub
В этом файле месяц ставится автоматом.
Если поставить птичку рябом с месяцами, то в дате "месяц" поменяется, и макрос пересчитает таблицу, скрыв или показав столбцы

Цитата
Hohlik написал:
Надо что-бы, Этот код сработал при запуске программы
и при выборе месяца в поле со списком (элемент управления формы)
а всё оставшиеся время молчал!
А то при каждом вводе значений таблица пересчитывается, и из-за этого не работает кнопка ctrl+z. А это жуть как не удобно!
Изменено: Hohlik - 07.06.2017 11:02:47
 
В модуль вставить вот это:
Код
1
2
3
4
5
Sub skryt()
   Columns(45).Hidden = IIf([AS6] = 0, True, False)
   Columns(44).Hidden = IIf([AR6] = 0, True, False)
   Columns(43).Hidden = IIf([AQ6] = 0, True, False)
End Sub

Бессмысленно осмысливать смысл неосмысленными мыслями.
 
Так просто)))


Иван, спасибо вам огромное очень помогли)))

а этот скрипт при запуске программы срабатывает?  А то мне не проверить)))
 
Как я понял задачу, файл во вложении.

Бессмысленно осмысливать смысл неосмысленными мыслями.
 
Ещё раз огромное спасибо!!!
 
Hohlik, до сообщения №9 я исправил, дальше сами. Зачем писать через строку? Зачем в сообщениях столько пустоты?
Страницы: 1
Читают тему
Loading...