Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование, связанное с MS Office > Народ как сделать в EXELЕ чтоб макрос обнавлялся ч


Автор: pro_kan 19.1.2007, 13:58
КТО СПЕЦ по EXEL помогите.
надо строчку которую можно вставить в макрос ......

Добавлено @ 14:01 
надо что обнавлялся каждую минуту

Добавлено @ 14:13 
а то я замучилси на кнопки жать в ЕХЕЛЕ 15 макросов и все поочередно нажимаю. некоторые через 5 мин, 1 мин, а некоторые через час. 
а данные идут посекундно. формат времени /10:30:30/

Автор: LSD 19.1.2007, 14:13
Модератор: перемещено из Общие вопросы по базам данных

Автор: skyboy 19.1.2007, 14:29
что значит "макрос обновлялся"? ты что его - динамически формируешь?

Автор: Genyaa 19.1.2007, 14:33
Подробней, пжлста... (да, и зачем решать задачу так, чтобы макрос нужно было так часто менять?)

Автор: pro_kan 19.1.2007, 14:39
данные поступают из интернета в эксель. затем стоит сортировка по времени. 

    Бумага                                                Кол-во    Операция    Время    Цена
2    ГАЗПРОМ ао [Внесписочные акции]    59    Купля                   10:29:59    279
3    ГАЗПРОМ ао [Внесписочные акции]    10    Продажа                   10:29:59    279

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

Добавлено @ 14:43 
т.е. нужно чтоб макрос выполнялся в нужное время  САМ.
с утра до вечера. комп мощный вроде потянет. данных 65000 строк на 16 листах. по 5 колонок на листе!!!!

Автор: mihanik 19.1.2007, 15:28
Я понмаю так, что тебе нужно не чтобы "макрос обновился", а чтобы имеющийся макрос запускался автоматически сам по определённому расписанию...

Так?

Добавлено @ 15:29 
Если так, то будем думать...

Автор: mihanik 19.1.2007, 15:48
Итак....
Первый раз тебе всё равно придётся самому запустить процедуру (макрос)

В конце макроса использовать 


Код

Application.OnTime TimeValue("MyTime"), "my_Procedure"


Пример

Этот пример каждые 10 секунд (или что-то около этого) "пищит".


Код

Private Sub CommandButton1_Click()
Dim MyTime As Date
Dim T As String

    
    MyTime = Time
    MyTime = DateAdd("s", 10, MyTime)
    Beep
    
    T = Format(MyTime, "hh:mm:ss")
    
    Application.OnTime TimeValue(T), "CommandButton1_Click"

End Sub


Цитата

DateAdd Function
      

Returns a Variant (Date) containing a date to which a specified time interval has been added.

Syntax

DateAdd(interval, number, date)

The DateAdd function syntax has these named arguments:

Part Description 
interval Required. String expression that is the interval of time you want to add. 
number Required. Numeric expression that is the number of intervals you want to add. It can be positive (to get dates in the future) or negative (to get dates in the past). 
date Required. Variant (Date) or literal representing date to which the interval is added. 



Settings

The interval argument has these settings:

Setting Description 
yyyy Year 
q Quarter 
m Month 
y Day of year 
d Day 
w Weekday 
ww Week 
h Hour 
n Minute 
s Second 



Remarks

You can use the DateAdd function to add or subtract a specified time interval from a date. For example, you can use DateAdd to calculate a date 30 days from today or a time 45 minutes from now.

To add days to date, you can use Day of Year ("y"), Day ("d"), or Weekday ("w").

The DateAdd function won't return an invalid date. The following example adds one month to January 31:

DateAdd("m", 1, "31-Jan-95")

In this case, DateAdd returns 28-Feb-95, not 31-Feb-95. If date is 31-Jan-96, it returns 29-Feb-96 because 1996 is a leap year.

If the calculated date would precede the year 100 (that is, you subtract more years than are in date), an error occurs.

If number isn't a Long value, it is rounded to the nearest whole number before being evaluated.

Note   The format of the return value for DateAdd is determined by Control Panel settings, not by the format that is passed in date argument.

Note   For date, if the Calendar property setting is Gregorian, the supplied date must be Gregorian. If the calendar is Hijri, the supplied date must be Hijri. If month values are names, the name must be consistent with the current Calendar property setting. To minimize the possibility of month names conflicting with the current Calendar property setting, enter numeric month values (Short Date format).


Автор: pro_kan 19.1.2007, 16:13
ребята огромное спасибо ща попробую

Автор: mihanik 19.1.2007, 16:31
pro_kan, у меня в примере, по-моему, маленькая ошибка...
Но не существенная...
Кажется я что-то с форматом напутал.

Разберёшься!

Добавлено @ 16:33 
Код

Private Sub CommandButton1_Click()
Dim MyTime As Date
    
    MyTime = Time
    MyTime = DateAdd("s", 10, MyTime)
    Beep
   
    Application.OnTime TimeValue(MyTime), "CommandButton1_Click"

End Sub


Автор: pro_kan 19.1.2007, 17:18
УРА ЗАРАБОТАЛООООООООО. я две недели бился над этим никто мне так и неответил!!!!!!!!!!

еще раз благодарен за помощьььььь........

Добавлено @ 17:19 
я тут допетрил и все ок макрос как надо до секундочки запускается.........

Добавлено @ 17:31 
самое главное найти человека который в этом разбирается!!!!!!

Добавлено @ 17:31 
 smile 

Автор: Genyaa 19.1.2007, 18:11
Цитата(pro_kan @  19.1.2007,  18:18 Найти цитируемый пост)
самое главное найти человека

... и задать вопрос правильно.

Автор: mihanik 22.1.2007, 08:09
Не забывайте помечать вопрос решённым.

Помечу сам... smile

Автор: pro_kan 22.1.2007, 15:16
Цитата(mihanik @ 22.1.2007,  08:09)
Не забывайте помечать вопрос решённым.

Помечу сам... smile

как это сделать smile

Добавлено @ 15:25 
Цитата(mihanik @ 19.1.2007,  16:31)
pro_kan, у меня в примере, по-моему, маленькая ошибка...
Но не существенная...
Кажется я что-то с форматом напутал.

Разберёшься!

Добавлено @ 16:33 
Код

Private Sub CommandButton1_Click()
Dim MyTime As Date
    
    MyTime = Time
    MyTime = DateAdd("s", 10, MyTime)
    Beep
   
    Application.OnTime TimeValue(MyTime), "CommandButton1_Click"

End Sub


да а можно сделать чтоб макрос выполнялся не каждые 10 секунд, а в заданное время например только в //13:00:00//??????

чето немогу написать. MyTime    :-(

кстати это сильно будет тормозить комп? блин мне придется в 1 файле делать уже около 150 макросов.........  каждые 5 мин на протяжении 9 часов.....

Добавлено @ 15:27 
mihanik, если можешь помоги!!!! 

Автор: mihanik 23.1.2007, 09:01
Цитата(pro_kan @  22.1.2007,  15:16 Найти цитируемый пост)
да а можно сделать чтоб макрос выполнялся не каждые 10 секунд, а в заданное время например только в //13:00:00//??????


Можно!!!

Код

Application.OnTime TimeValue("13:00:00"), "CommandButton1_Click"


Про 
Цитата(pro_kan @  22.1.2007,  15:16 Найти цитируемый пост)
кстати это сильно будет тормозить комп? блин мне придется в 1 файле делать уже около 150 макросов.........  каждые 5 мин на протяжении 9 часов.....


Не понял...


Автор: pro_kan 23.1.2007, 16:30
Цитата(mihanik @ 23.1.2007,  09:01)
Цитата(pro_kan @  22.1.2007,  15:16 Найти цитируемый пост)
да а можно сделать чтоб макрос выполнялся не каждые 10 секунд, а в заданное время например только в //13:00:00//??????


Можно!!!

Код

Application.OnTime TimeValue("13:00:00"), "CommandButton1_Click"


Про 
Цитата(pro_kan @  22.1.2007,  15:16 Найти цитируемый пост)
кстати это сильно будет тормозить комп? блин мне придется в 1 файле делать уже около 150 макросов.........  каждые 5 мин на протяжении 9 часов.....


Не понял...

я имел в виду что у меня будет 150 макросов в 1 книге EXELя.  ща уже около 70 готовых. все они сортируют и сохраняют данные в разное время.. одна книга потянет 150 макросов не будет ли зависать комп или сама книга не повредиться????

Чем больше пишу тем больше узнаю.
________________________________________

УГУ.  13.00 вставил макрос пошел. 
Хотя возникла проблема с модулем. Вставил енту строчку в другой модуль. в указанное время ехел ругнулся. думал думал ... бошку сломал потом понял что модулем ошибся.....
КАК МОЖНО РЕШИТЬ ПРОБЛЕМУ, ЧТО ЕСЛИ НЕ ВТОМ МОДУЛЕ НАБРАЛ он все равно выполнил бы макрос!!!!!?????????????????




Автор: mihanik 24.1.2007, 08:16
pro_kan, ты сначала продумай алгоритм поведения книги...
По-моему, ты начал методически неверно решать поставленную задачу...

Почему ты решил запускать несколько макросов в разное время?
Не случиться ли так, что два или более макросов будут работать над одними и теми же данными? (Один ещё не закончил, а другой уже начал...)

Может тебе написать глабальный какой-нибудь модуль из которого по очереди будут вызываться все остальные макросы?
Расписание выполнения ты будешь устанавливать только для главного модуля...
Допустим раз в полчаса.
Так ты и со временем не запутаешься, и комп не повесишь, и целостность данных обеспечишь?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)