|
|
|
VBA Excel: causусы refreshа External Data
|
|||
|---|---|---|---|
|
#18+
доброго времени суток! хочу поделится радостью, которую так невозможно было найти в инете. Попытки избавиться от глюка у меня были в течении пару дней и вот есть решение с чем радостно и делюсь. Задача: Апдейт External Data на одном листе для преобразования и последующего заполнения данных на другом листе этого же Workbook. Проблема:Апдейт происходит позже чем преобразование и заполнение происходит старыми данными, и только после заполнения destination листа, происходит обновление External Data Код: 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. Нужно в External Data Range Properties снять галку Enable background refresh ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2007, 18:43 |
|
||
|
VBA Excel: causусы refreshа External Data
|
|||
|---|---|---|---|
|
#18+
Ради Бога простите, что я откликаюсь на ваше решение, я понимаю, что вы им с ним же радостно и делитесь, а не с участниками форума. Да, решение хоть и простое, но на самом деле важное. Единственно, я бы осмелился сказать, что лучше всегда указывать свойства у классов. Например, у вас есть такое место в коде: Set workdays = Worksheets(pageProject).Range("E4:I4") i = 0 For Each Row In workdays Period(i) = Row.Value i = i + 1 Next Т.е. вы пытаетесь в ранге как таковом идти по его строкам. Такие вещи в .NET уже прощаться не будут. Вам надо перебирать строки не в ранге, а в коллекции его (ранга) строк: For Each Row In workdays.Rows Ну и так далее. Успехов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2007, 19:06 |
|
||
|
VBA Excel: causусы refreshа External Data
|
|||
|---|---|---|---|
|
#18+
а вот просить прощения и не за что - одна благодарность) потому как давно уж хочется приобщится к поколению .NET только вот в рамках работы приходится копаться VBA Access 97) (что стыдно даже признавать)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2007, 19:14 |
|
||
|
VBA Excel: causусы refreshа External Data
|
|||
|---|---|---|---|
|
#18+
It's OK! Начните с привычки все делать в классах, а не в модулях. Как говорят в Одессе (по-моему) - "Почувствуйте разницу!". И мы с удовольствием разделим вашу радость, если вы поделитесь ею с нами, а не с ними. Успехов! :0)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2007, 19:22 |
|
||
|
VBA Excel: causусы refreshа External Data
|
|||
|---|---|---|---|
|
#18+
Кстати, For Each Row In workdays.Rows тоже нехорошо. Там вы как бы что-ли берете зарезервированное слово Row в качестве суб"екта нумерации. Мне даже непонятно, почему оно вообще работает. Надо ввести об"ект класса Range (в .NET он будет (будем надеяться) класса Row), и уже этот об"ект использовать в цикле: Dim objRow as Range For Each objRow In workdays.Rows Успехов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2007, 19:37 |
|
||
|
|

start [/forum/topic.php?fid=60&tid=2164280]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
148ms |
get topic data: |
7ms |
get forum data: |
1ms |
get page messages: |
26ms |
get tp. blocked users: |
1ms |
| others: | 230ms |
| total: | 433ms |

| 0 / 0 |
