Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
28.10.2011, 09:52
|
|||
---|---|---|---|
|
|||
Проблема с выполнением процедуры. |
|||
#18+
Имею следующий код на VBA для работы на расчетных листаз, содержит функцию и процедуру. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73.
Функция написана для присуждения определенных категорий в зависимости от принимаеемого парметра. Процедура же написана для проверки совсем других чисел. Но почему-то, когда я в отладчике исправлял один косячок (в коде его уже нет), то с удивлением обнаружил, что каждый раз, когда в ходе выполнения кода процедуры встречается команда, отвечающая за присвоение значения ячейке, то выполняется функция. Вопрос в том, почему она выполняется, а также как этого избежать ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.10.2011, 19:37
|
|||
---|---|---|---|
|
|||
Проблема с выполнением процедуры. |
|||
#18+
> Автор: Feanaro > Вопрос в том, почему она выполняется, а также как этого избежать скорее всего эта функция стоит в какой-то ячейке на листе и при присвоении в макросе производится пересчет листа. Хотя функция и не объявлена как "летучая"(которая должна пересчитыватся при каждом чихе) она стоит видимо в связке(сумма, например) с другой, которая и вызывает пересчет. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
|
29.10.2011, 02:44
|
|||
---|---|---|---|
Проблема с выполнением процедуры. |
|||
#18+
автори не объявлена как "летучая" А можно с этого места подробнее? А как объявляется "летучая" функция? Я по своей неопытности считал, что пересчёт листа производится при любом изменении(если включён автопересчёт) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
29.10.2011, 11:23
|
|||
---|---|---|---|
|
|||
Проблема с выполнением процедуры. |
|||
#18+
alex77755, Для декларации функции как "летучей" используется метод объекта Application - Volatile, вызов которого ставится первой строкой пользовательской функции:Справка к VBAThis example marks the user-defined function "My_Func" as volatile. The function will be recalculated whenever calculation occurs in any cells on the worksheet on which this function appears. Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=60&mobile=1&tid=2158340]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
others: | 352ms |
total: | 473ms |
0 / 0 |