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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.09.2011, 14:40   #1
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
По умолчанию как перебрать все листы, кроме диаграмм (эксель2003)??

подскажите, какк перебрать все листы, кроме диаграмм (диаграмма на отдельном листе)?? никак не могу придумать как записать условие Т_Т

Код:
    For Each Sh_ In ActiveWorkbook.Sheets
        If Not Charts Then   ' РУГАЕТСЯ ТУТ
            Sh_.Activate
            With ActiveSheet
                .Columns("A:A").Replace What:="_", Replacement:=" ", _
                  LookAt:=xlPart, ReplaceFormat:=True
            End With
        End If
    Next Sh_
Bape}l{ka вне форума Ответить с цитированием
Старый 27.09.2011, 15:42   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

диаграммы не являются элементами коллекции Sheets. перебирая листы Вы не нарветесь на диаграмму, другое дело Вам надо проверить не содержит ли контрктный лист диаграммы, тогда
For Each Sh_ In ActiveWorkbook.Sheets
If Sh_.Charts.count = 0 Then ...
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 27.09.2011, 15:51   #3
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
диаграммы не являются элементами коллекции Sheets
Ещё как являются...

Проверяем:
Код:
Sub test1()
    For Each sh In ThisWorkbook.Sheets: Debug.Print sh.Name: Next sh
End Sub
Результат:
Цитата:
Лист3
Диаграмма1
Лист2
Лист1
Код:
Sub test2()
    For Each sh In ThisWorkbook.Worksheets: Debug.Print sh.Name: Next sh
End Sub
Результат:
Цитата:
Лист3
Лист2
Лист1

Вывод: используем коллекцию Worksheets вместо Sheets - и диаграммы нам не попадутся.
EducatedFool вне форума Ответить с цитированием
Старый 27.09.2011, 16:44   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

о каких диаграммах речь идет, просветите темного...
Вложения
Тип файла: rar КнигаR714.rar (11.5 Кб, 12 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 27.09.2011, 16:51   #5
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Речь о листах диаграмм.
Вставить->Лист->Диаграммы.
Была уже дискуссия на эту тему на Plанете...
И кстати тут все не без греха Но я стараюсь учитывать...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 27.09.2011, 17:03   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

опа, вот это номер.
спасибо, Игорь.
не использовал никогда сам и не встречался ни разу в свей деятельности, ща посмотрим это еще для чего надо
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 27.09.2011, 17:11   #7
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Я разок столкнулся, да и на форумах люди жаловались.
Можно легко создать комбинацией клавиш (какой, не помню, но случалось создавать).
На них нет ячеек, поэтому при работе с sheets и с ячейками сразу вылезает ошибка.
А ещё есть лист макросов! Кстати, если его кодом сделать veryhidden, то вообще цирк - его нигде не видно (даже в редакторе), но в sheets.count он есть, и имеет естественно свой index, что может сбить всю нумерацию в макросе...
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 27.09.2011 в 17:14.
Hugo121 вне форума Ответить с цитированием
Старый 27.09.2011, 18:12   #8
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
По умолчанию

создается комбинацией клавиш: выделить диапазон => F11 (и еще есть какая-то другая комбинация, не помню)

EducatedFool, спасибо!! не знала таких тонкостей)) у меня тоже была мысль, что вроде они не должны относиться к рабочим листам..
Bape}l{ka вне форума Ответить с цитированием
Старый 27.09.2011, 18:51   #9
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Если не ошибаюсь, я это Валерию тут с год назад объяснял. Чтоб выяснить, какие бывают листы, ПКМ на ярлыке любого - Добавить. См.скрин. Из всех на нем только один Worksheet.
Изображения
Тип файла: gif 2011-09-27_174957.gif (16.8 Кб, 49 просмотров)
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автофильтр (AutoFilter), как отфильтровать данные все кроме.? SAIIIA.P Microsoft Office Excel 8 30.06.2022 19:33
Как скрыть все листы в ЕКСЕЛЕ кроме определенного списка sasha_prof Microsoft Office Excel 2 03.12.2010 21:09
Как программно перебрать в цикле все формы в приложении? chandrasecar Общие вопросы Delphi 18 11.09.2009 12:14
Как перебрать все числа из заданных цифр, чтобы цифры в числах не повторялись? TwiX Общие вопросы Delphi 7 17.08.2009 16:56
как перебрать все элементы на форме? Аlex Общие вопросы C/C++ 1 07.02.2009 03:46