Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Вычисление времени вычислений ) - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Вычисление времени вычислений )
Андрей Дата: Понедельник, 03.09.2012, 05:22 | Сообщение № 1
Группа: Гости
Дамы и господа, здравствуйте!

Вопрос очень простой. Созданная система упр. учета завода получилась большая и сложная. Excel начал жестко тормозить - каждый пересчет идет 2 с лишним секунды, хотя введены только данные по 4 месяцам от года. Надо упрощать архитектуру. Чтобы понять, где именно упрощать необходимо определить наиболее тормозные моменты. Для этого пытаюсь использовать калькуляторы, рекомендуемые Микрософтом: http://msdn.microsoft.com/ru-ru/library/ff700515.aspx (приблизительно середина страницы).

Проблема в том, что я, к сожалению, не владею алхимией макросов и не понимаю, что и где нужно писать. Вторую часть кода, как и рекомендовано в тексте, вставил в "Insert-Module". Запускаю подсчет - выдает 0 секунд. Понимаю, что не прописал саму функцию Function MicroTimer(), но где и как ее прописывать - не знаю. Если тоже в "Insert-Module", то ругается на разрядность и требует перевести в 64.

Подскажите, куда и как прописывать функцию таймера?
 
Ответить
СообщениеДамы и господа, здравствуйте!

Вопрос очень простой. Созданная система упр. учета завода получилась большая и сложная. Excel начал жестко тормозить - каждый пересчет идет 2 с лишним секунды, хотя введены только данные по 4 месяцам от года. Надо упрощать архитектуру. Чтобы понять, где именно упрощать необходимо определить наиболее тормозные моменты. Для этого пытаюсь использовать калькуляторы, рекомендуемые Микрософтом: http://msdn.microsoft.com/ru-ru/library/ff700515.aspx (приблизительно середина страницы).

Проблема в том, что я, к сожалению, не владею алхимией макросов и не понимаю, что и где нужно писать. Вторую часть кода, как и рекомендовано в тексте, вставил в "Insert-Module". Запускаю подсчет - выдает 0 секунд. Понимаю, что не прописал саму функцию Function MicroTimer(), но где и как ее прописывать - не знаю. Если тоже в "Insert-Module", то ругается на разрядность и требует перевести в 64.

Подскажите, куда и как прописывать функцию таймера?

Автор - Андрей
Дата добавления - 03.09.2012 в 05:22
Irysha Дата: Понедельник, 03.09.2012, 08:54 | Сообщение № 2
Группа: Пользователи
Ранг: Участник
Сообщений: 68
Репутация: 17 ±
Замечаний: 0% ±

2007,2013
Думаю меня поддержат мастера этого форума:

1. Прочитайте правила
2. Зарегистрируйтесь
3. Выложите файл примера

И будет вам счастье biggrin
 
Ответить
СообщениеДумаю меня поддержат мастера этого форума:

1. Прочитайте правила
2. Зарегистрируйтесь
3. Выложите файл примера

И будет вам счастье biggrin

Автор - Irysha
Дата добавления - 03.09.2012 в 08:54
KuklP Дата: Понедельник, 03.09.2012, 09:33 | Сообщение № 3
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Попробуйте декларации прописать так:
[vba]
Code
#If Win64 Then
         #If VBA7 Then    ' Windows x64, Office 2010
             Declare PtrSafe Function getTickCount Lib "kernel32" _
                     Alias "QueryPerformanceCounter" (cyTickCount As Currency) As LongLong

             Declare PtrSafe Function getFrequency Lib "kernel32" _
                     Alias "QueryPerformanceFrequency" (cyFrequency As Currency) As LongLong

         #Else    ' Windows x64,Office 2003-2007
             Private Declare Function getFrequency Lib "Kernel32" _
                        Alias "QueryPerformanceFrequency" (cyFrequency As Currency) As Long
             Private Declare Function GetTickCount Lib "Kernel32" _
                        Alias "QueryPerformanceCounter" (cyTickCount As Currency) As Long
         #End If
#Else
         #If VBA7 Then    ' Windows x86, Office 2010
             Declare PtrSafe Function getTickCount Lib "kernel32" _
                     Alias "QueryPerformanceCounter" (cyTickCount As Currency) As Long

             Declare PtrSafe Function getFrequency Lib "kernel32" _
                     Alias "QueryPerformanceFrequency" (cyFrequency As Currency) As Long
         #Else    ' Windows x86, Office 2003-2007
             Private Declare Function getFrequency Lib "Kernel32" _
                        Alias "QueryPerformanceFrequency" (cyFrequency As Currency) As Long
             Private Declare Function GetTickCount Lib "Kernel32" _
                        Alias "QueryPerformanceCounter" (cyTickCount As Currency) As Long
         #End If
#End If
[/vba]
Еще рекомендую заглянуть [url=http://msdn.microsoft.com/en-us/library/ee691831(office.14).aspx]сюда[/url].


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728


Сообщение отредактировал KuklP - Понедельник, 03.09.2012, 09:37
 
Ответить
СообщениеПопробуйте декларации прописать так:
[vba]
Code
#If Win64 Then
         #If VBA7 Then    ' Windows x64, Office 2010
             Declare PtrSafe Function getTickCount Lib "kernel32" _
                     Alias "QueryPerformanceCounter" (cyTickCount As Currency) As LongLong

             Declare PtrSafe Function getFrequency Lib "kernel32" _
                     Alias "QueryPerformanceFrequency" (cyFrequency As Currency) As LongLong

         #Else    ' Windows x64,Office 2003-2007
             Private Declare Function getFrequency Lib "Kernel32" _
                        Alias "QueryPerformanceFrequency" (cyFrequency As Currency) As Long
             Private Declare Function GetTickCount Lib "Kernel32" _
                        Alias "QueryPerformanceCounter" (cyTickCount As Currency) As Long
         #End If
#Else
         #If VBA7 Then    ' Windows x86, Office 2010
             Declare PtrSafe Function getTickCount Lib "kernel32" _
                     Alias "QueryPerformanceCounter" (cyTickCount As Currency) As Long

             Declare PtrSafe Function getFrequency Lib "kernel32" _
                     Alias "QueryPerformanceFrequency" (cyFrequency As Currency) As Long
         #Else    ' Windows x86, Office 2003-2007
             Private Declare Function getFrequency Lib "Kernel32" _
                        Alias "QueryPerformanceFrequency" (cyFrequency As Currency) As Long
             Private Declare Function GetTickCount Lib "Kernel32" _
                        Alias "QueryPerformanceCounter" (cyTickCount As Currency) As Long
         #End If
#End If
[/vba]
Еще рекомендую заглянуть [url=http://msdn.microsoft.com/en-us/library/ee691831(office.14).aspx]сюда[/url].

Автор - KuklP
Дата добавления - 03.09.2012 в 09:33
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!