Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Формула, которая зависит от текущей даты. / 17 сообщений из 17, страница 1 из 1
12.02.2010, 12:54
    #36465562
segail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формула, которая зависит от текущей даты.
Здравствуйте.
Подскажите.
Есть формула которая зависит от текущий даты
Код: plaintext
=ЕСЛИ(A55<=СЕГОДНЯ();СУММ(C55+E55+F55+H55+R54); 0 )
В ячейки A55 установлена дата. Например, сегодня 12.02.2010 в ячейки A55 установлена дата 13.02.2010, в 00.00 часов формула должна показать результат, но она не покажет пока не произвести повторный ввод формулы, или необходимо закрыть файл и мо новому его открыть.
Как это можно исправить, чтобы формула в 00.00 автоматически показала результат?
...
Рейтинг: 0 / 0
12.02.2010, 13:44
    #36465742
vlth
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формула, которая зависит от текущей даты.
segail, наверное, без VBA здесь не обойтись: используйте метод Application.OnTime.
Есть ещё вариант(ы): если обновление должно происходить много чаще раза в сутки, можно обновлять какую-нибудь ячейку в цикле:
Код: plaintext
1.
2.
3.
4.
On Error Resume Next
Do
DoEvents
Worksheets( 1 ).Cells( 1 ,  1 ) =  1 
Loop
Или подключить к обновлению таймер...
...
Рейтинг: 0 / 0
12.02.2010, 13:46
    #36465746
Shamanus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формула, которая зависит от текущей даты.
segailЗдравствуйте.
Подскажите.
Есть формула которая зависит от текущий даты
Код: plaintext
=ЕСЛИ(A55<=СЕГОДНЯ();СУММ(C55+E55+F55+H55+R54); 0 )
В ячейки A55 установлена дата. Например, сегодня 12.02.2010 в ячейки A55 установлена дата 13.02.2010, в 00.00 часов формула должна показать результат, но она не покажет пока не произвести повторный ввод формулы, или необходимо закрыть файл и мо новому его открыть.
Как это можно исправить, чтобы формула в 00.00 автоматически показала результат?

если с листом в этот момент работают можно повесить обновление ячейки на событие selection change

если лист просто стоит -т.е. нужны типа часы в ячейке, которые сами идут, то нужно создать макрос который будет сам себя вызывать с любым интервалом от 1 сек. и обновлять ячейку
...
Рейтинг: 0 / 0
12.02.2010, 13:54
    #36465778
segail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формула, которая зависит от текущей даты.
vlth,
В смысле кликом по кнопке обновить диапазон ячеек, которые зависят от текущей даты?
Примерно так?
Код: plaintext
1.
2.
Private Sub CommandButton1_Click()
    Application.OnTime.[Отчет!$AE$ 6 :$AE$ 443 ]
End Sub
Насчет таймера не знаю…
...
Рейтинг: 0 / 0
12.02.2010, 13:57
    #36465791
segail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формула, которая зависит от текущей даты.
Shamanus[quot segail] нужны типа часы в ячейке, которые сами идут, то нужно создать макрос который будет сам себя вызывать с любым интервалом от 1 сек. и обновлять ячейку
Чего не знаю того не знаю.
...
Рейтинг: 0 / 0
12.02.2010, 14:00
    #36465809
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формула, которая зависит от текущей даты.
Нарыл в записках, можно наверное прикрутить:
Функция паузы:

Код:

Function Pauza(Tm As Double)
vrm! = Timer
Do While Timer - vrm! < Tm: DoEvents: Loop
End Function
Пример использования:

Код:

Sub Test1()
Dim ss As Double: ss = Timer
Pauza Val(Sheets("Лист1").TextBox3)
MsgBox "Время паузы составило " & Timer - ss & " сек."
End Sub


Вариант2 (с помощью функции WinApi):
Объявление функции:

Код:

Private Declare Function GetTickCount Lib "kernel32" () As Long
Пример использования:

Код:

Sub Delay_Paus()
MsgBox "Начнем?"
Tm = Val(Sheets("Лист1").TextBox3) 'время задержки (в миллисекундах)
ss = GetTickCount: DoEvents
Do While GetTickCount - ss < Tm: DoEvents: Loop
MsgBox "Конец."
End Sub
...
Рейтинг: 0 / 0
12.02.2010, 14:02
    #36465816
vlth
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формула, которая зависит от текущей даты.
segail, нет - жать ничего не надо: OnTime в заданное время запускает процедуру, название которой задаётся вместе со временем её запуска. В этой процедуре надо будет принудительно пересчитать лист (вызвать Calculate, например)
...
Рейтинг: 0 / 0
12.02.2010, 14:02
    #36465821
Shamanus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формула, которая зависит от текущей даты.
segail,

апликейш он тайм вызывает процедуру в назначенное время

вот код часов в ячейке

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Листинг  2 . 28 . Размещение в ячейке электронных часов
Sub UpdateTime()
   Dim varNextCall As Variant
   ' Записываем в ячейку текущее время
   Cells( 1 ,  1 ).Value = Now
   ' Записываем в varNextCall время, когда вызвать этот макрос _
    в следующий раз (через  1  секунду)
   varNextCall = TimeSerial(Hour(Now), Minute(Now), Second(Now) +  1 )
   ' Уведомляем Excel в необходимости вызова макроса
   Application.OnTime varNextCall, "UpdateTime"
End Sub


А вообще дайте мыло вышлю Вам набор полезных примеров на VBA откуда я в т.ч. взял этот
...
Рейтинг: 0 / 0
12.02.2010, 14:08
    #36465849
vlth
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формула, которая зависит от текущей даты.
Пример

Код: plaintext
1.
2.
3.
4.
5.
Sub Example()
Application.OnTime TimeValue("00:00:00"), "Обновить"
End Sub
Sub Обновить()
MsgBox ""
End Sub
...
Рейтинг: 0 / 0
12.02.2010, 14:33
    #36465954
segail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формула, которая зависит от текущей даты.
Shamanussegail,

апликейш он тайм вызывает процедуру в назначенное время

вот код часов в ячейке

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Листинг  2 . 28 . Размещение в ячейке электронных часов
Sub UpdateTime()
   Dim varNextCall As Variant
   ' Записываем в ячейку текущее время
   Cells( 1 ,  1 ).Value = Now
   ' Записываем в varNextCall время, когда вызвать этот макрос _
    в следующий раз (через  1  секунду)
   varNextCall = TimeSerial(Hour(Now), Minute(Now), Second(Now) +  1 )
   ' Уведомляем Excel в необходимости вызова макроса
   Application.OnTime varNextCall, "UpdateTime"
End Sub

А если уже известный диапазон ячеек с формулами, которые зависят от текущей даты =Отчет!$K$6:$L$443
В данный диапазон входят и ячейки с формулами которые не зависят от текущей даты.
...
Рейтинг: 0 / 0
12.02.2010, 14:50
    #36466020
Shamanus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формула, которая зависит от текущей даты.
segail,

ну Вам же написал vlth код

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Sub Example()
Application.OnTime TimeValue("00:00:00"), "Обновить"
Set ActSheet=ActiveWorkbook.ActiveSheet
End Sub
Sub Обновить()
ActSheet.Calculate
Application.OnTime TimeValue("00:00:00"), "Обновить"
End Sub

если Вы запустите макрос Example, он запустит процедуру Обновить,

В эту процедуру пишем 2 кода,
строка Calculate которая запускает расчет всех формул на листе

и Application.OnTime TimeValue("00:00:00"), "Обновить"
которая посадит себя в цикл т.е. каждые 0:00:00 будет запускаться процедура "обновить"
...
Рейтинг: 0 / 0
12.02.2010, 15:00
    #36466067
segail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формула, которая зависит от текущей даты.
Shamanus
если Вы запустите макрос Example,
В смысле как я его запущу.
А где должен располагаться макрос ЭтаКнига или Лист где формулы
...
Рейтинг: 0 / 0
12.02.2010, 15:00
    #36466071
Shamanus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формула, которая зависит от текущей даты.
segail,

обе процедуры достаточно расположить в коде модуля
...
Рейтинг: 0 / 0
12.02.2010, 15:43
    #36466214
vikttur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формула, которая зависит от текущей даты.
По самой формуле.
Конструкцией СУММ(C55+E55+F55+H55+R54) Вы суммируете уже суммированное :)
Нужно или СУММ(C55;E55;F55;H55;R54) или C55+E55+F55+H55+R54 (без СУММ).
Вся формула может иметь вид:
=(A55<=СЕГОДНЯ())*СУММ(C55;E55;F55;H55;R54)
...
Рейтинг: 0 / 0
12.02.2010, 22:11
    #36467074
segail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формула, которая зависит от текущей даты.
viktturПо самой формуле.
Конструкцией СУММ(C55+E55+F55+H55+R54) Вы суммируете уже суммированное :)
Нужно или СУММ(C55;E55;F55;H55;R54) или C55+E55+F55+H55+R54 (без СУММ).
Вся формула может иметь вид:
=(A55<=СЕГОДНЯ())*СУММ(C55;E55;F55;H55;R54)
понятно
но она работает же...
...
Рейтинг: 0 / 0
14.02.2010, 00:22
    #36468038
vikttur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формула, которая зависит от текущей даты.
segail, работает, конечно, но душа красоты просит :)
...
Рейтинг: 0 / 0
14.02.2010, 03:10
    #36468179
Dophin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формула, которая зависит от текущей даты.
segail

Вам к нам в избушку) посмотреть до чего эти маньяки доводят "лишь бы красиво было" )))))
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Формула, которая зависит от текущей даты. / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]