Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 13.11.2008, 11:53   #11
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от Bu$ter Посмотреть сообщение
Код:
Sub test()

Dim sh As Worksheet


For Each sh In ThisWorkbook.Worksheets

Range("d3").Value = "ТЕСТ"


Next sh

End Sub

Пытаюсь протеститровать этот код... но он НЕ выполняется НА ВСЕХ СТРАНИЦАХ, а только на первой, и на этом цикл прекращается...
Вы забыли добавить
sh.Range("d3").Value = "ТЕСТ"
valerij вне форума
Старый 13.11.2008, 11:56   #12
Bu$ter
Пользователь
 
Аватар для Bu$ter
 
Регистрация: 16.05.2008
Сообщений: 73
По умолчанию

Цитата:
Сообщение от valerij Посмотреть сообщение
Вы забыли добавить
sh.Range("d3").Value = "ТЕСТ"
Спасибо, точно забыл ))))
Bu$ter вне форума
Старый 13.11.2008, 12:12   #13
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию 2 Bu$ter

читаем пост #6 - я описывал варианты, как поправить код, чтобы он начал работать. Кстати описаны не все варианты.

Цитата:
Sub test()
Dim sh As Worksheet
For Each sh In ThisWorkbook.Worksheets
Range("d3").Value = "ТЕСТ"
Next sh
End Sub
Цикл отличный, спору нет, только дедает совсем не то, что хотелось протестировать.
строка Range("d3").Value = "ТЕСТ" запишет слово ТЕСТ в ячейку d3 АКТИВНОГО В ДАННЫМ МОМЕНТ ЛИСТА. А то, что переменная sh при каждом новом проходе по циклу ссылается на новый лист не имеет к Range("d3").Value = "ТЕСТ" никакого отношения...
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума
Старый 13.11.2008, 12:55   #14
Bu$ter
Пользователь
 
Аватар для Bu$ter
 
Регистрация: 16.05.2008
Сообщений: 73
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
читаем пост #6 - я описывал варианты, как поправить код, чтобы он начал работать. Кстати описаны не все варианты.



Цикл отличный, спору нет, только дедает совсем не то, что хотелось протестировать.
строка Range("d3").Value = "ТЕСТ" запишет слово ТЕСТ в ячейку d3 АКТИВНОГО В ДАННЫМ МОМЕНТ ЛИСТА. А то, что переменная sh при каждом новом проходе по циклу ссылается на новый лист не имеет к Range("d3").Value = "ТЕСТ" никакого отношения...
Спасибо. Разобрался
Кстати воспользовался вашим советом из 6 поста:

Цитата:
Сообщение от IgorGO Посмотреть сообщение
Такие есть предлжения:

1) или в теле цикла по листам (For Each sh In Worksheets...) следующей строчкой написать sh.Activate
Bu$ter вне форума
Старый 13.11.2008, 20:13   #15
КаМММ
Почти "Чайник"
Форумчанин
 
Аватар для КаМММ
 
Регистрация: 09.06.2008
Сообщений: 134
По умолчанию

АБАЛДЕТЬ!!!!!
А какой простой был вопрос!

Последний раз редактировалось КаМММ; 13.11.2008 в 20:17.
КаМММ вне форума
Старый 14.11.2008, 11:56   #16
Bu$ter
Пользователь
 
Аватар для Bu$ter
 
Регистрация: 16.05.2008
Сообщений: 73
По умолчанию

Ребят, ну с макросом вроде разобрался.
Но! Не пойму почему файл разросся аж до 18(!) метров. Когда выполняется мкрос - вся системы виснет. Диспетчер задач показыват что само приложение Excel жрет 100 метров оперативы (при моих 488 метров на борту рабочей машины). А файл подкачки увеличивается до 1,3 (!!!) Ггб.
Подскажите, что это может быть?
И сохраняется минут 10 (((
Вложения
Тип файла: rar ЦЕНЫ.rar (935.7 Кб, 33 просмотров)

Последний раз редактировалось Bu$ter; 14.11.2008 в 11:59.
Bu$ter вне форума
Старый 14.11.2008, 12:03   #17
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
Когда выполняется мкрос - вся системы виснет.
А у Вас, случайно, нет процедур, выполняемых по каким-нибудь событиям? Если есть - запрещайте их обработку при выполнении макроса.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума
Старый 14.11.2008, 14:32   #18
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от Bu$ter Посмотреть сообщение
Ребят, ну с макросом вроде разобрался.
Но! Не пойму почему файл разросся аж до 18(!) метров. Когда выполняется мкрос - вся системы виснет. Диспетчер задач показыват что само приложение Excel жрет 100 метров оперативы (при моих 488 метров на борту рабочей машины). А файл подкачки увеличивается до 1,3 (!!!) Ггб.
Подскажите, что это может быть?
И сохраняется минут 10 (((
Какой у Вас проц, на моем ПК(Процессор: Core2 Duo CPU2х2.40 GHz, Память (RAM): 4,00 ГБ) сохраняется за доли секунд, а вот открывается за 6 сек. макрос выполняется 12 сек. и просит открыть файл, после запроса "Выбрать последний файл Скидки_Комкуремтов", Конкуренты.
Может в этом, загвостка?
valerij вне форума
Старый 14.11.2008, 14:34   #19
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Не пойму почему файл разросся аж до 18(!) метров
Можете попробовать убрать форматирование строк, но это уменьшит размер файла ненамного (на 10-20 процентов)

В Вашем файле каждый лист, даже если его очистить от данных и форматирования, весит около 1.43 Мб

Проще программно перенести данные из этой книги в новую (пустую)
Это, по идее, должно заметно повлиять на размер файла.

В качестве временной меры можно посоветовать разбить файл на несколько отдельных (по одному листу в каждом)

Цитата:
Когда выполняется мкрос - вся системы виснет
Конечно, тут многое зависит от размера файла, но в определённой степени наблюдаемое явление может быть обусловлено нехваткой ресурсов GDI из-за чрезмерного количества всяких SELECT и ACTIVATE

Попробуйте использовать код из поста #7. У меня, к примеру, этот код демонстрирует более высокое быстродействие, нежели Ваш.

Кроме того, у Вас очень много повторяющихся участков кода.
Если код оптимизировать, это значительно скажется на скорости его выполнения.

Но, безусловно, с размером файла надо тоже что-то решать.
EducatedFool вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Help! Как проверить наличие "рисунков" в листах книги? Bezdar Microsoft Office Excel 4 15.08.2008 15:09
Выполнение функции nikleb JavaScript, Ajax 7 10.08.2008 01:49
image. печать большого изображения на нескольких листах OLEG'arh Общие вопросы Delphi 1 20.06.2008 13:06
Суммесли и диапазоны на листах _ДЭН_78 Microsoft Office Excel 1 18.09.2007 15:38
Одна "шапка" на всех листах Noor Microsoft Office Excel 2 30.07.2007 15:39