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

Вход

Регистрация

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

 

= Мир MS Excel/VBA. Как проверить, существует ли лист с диаграммой? - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » VBA. Как проверить, существует ли лист с диаграммой? (Если нет, то создать, если есть - назначить новые данные.)
VBA. Как проверить, существует ли лист с диаграммой?
Michael_S Дата: Вторник, 12.03.2013, 19:44 | Сообщение № 1
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
Всем привет!
Записал макрорекордером создание диаграммы:
[vba]
Код
Sub Charts_Add()
     Charts.Add
     ActiveChart.ChartType = xlColumnClustered
     ActiveChart.SetSourceData Source:=Range( _
         "'Лист 1 '!$J$1:$K$516")
End Subb
[/vba]
но по ходу дела мне нужно несколько раз увеличивать диапазон. Каждый раз создавать диаграмму - это сколько ж их будет...
Вот и возник такой вопрос - если диаграммы нет, то создать, если уже есть - просто переназначить диапазон (это знаю как).
...да, лист с диаграммой, как и сама диаграмма, могут иметь произвольное наименование.
 
Ответить
СообщениеВсем привет!
Записал макрорекордером создание диаграммы:
[vba]
Код
Sub Charts_Add()
     Charts.Add
     ActiveChart.ChartType = xlColumnClustered
     ActiveChart.SetSourceData Source:=Range( _
         "'Лист 1 '!$J$1:$K$516")
End Subb
[/vba]
но по ходу дела мне нужно несколько раз увеличивать диапазон. Каждый раз создавать диаграмму - это сколько ж их будет...
Вот и возник такой вопрос - если диаграммы нет, то создать, если уже есть - просто переназначить диапазон (это знаю как).
...да, лист с диаграммой, как и сама диаграмма, могут иметь произвольное наименование.

Автор - Michael_S
Дата добавления - 12.03.2013 в 19:44
ikki Дата: Вторник, 12.03.2013, 20:02 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
проверить коллекцию Charts для книги?


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщениепроверить коллекцию Charts для книги?

Автор - ikki
Дата добавления - 12.03.2013 в 20:02
Michael_S Дата: Вторник, 12.03.2013, 20:14 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
Как?

[offtop]...где то на просторах мирового океана...
возле советской баржи вплывает советская подлодка.
-Не видел, куда американцы делись?
-на северо-запад пошли
-че умничаешь, пальцем покажи! [/offtop]


Сообщение отредактировал Michael_S - Вторник, 12.03.2013, 20:15
 
Ответить
СообщениеКак?

[offtop]...где то на просторах мирового океана...
возле советской баржи вплывает советская подлодка.
-Не видел, куда американцы делись?
-на северо-запад пошли
-че умничаешь, пальцем покажи! [/offtop]

Автор - Michael_S
Дата добавления - 12.03.2013 в 20:14
ikki Дата: Вторник, 12.03.2013, 20:22 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
[vba]
Код
if thisworkbook.charts.count=1 then ' существует...
[/vba]
или вопрос не понял?..


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщение[vba]
Код
if thisworkbook.charts.count=1 then ' существует...
[/vba]
или вопрос не понял?..

Автор - ikki
Дата добавления - 12.03.2013 в 20:22
Michael_S Дата: Вторник, 12.03.2013, 20:29 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
Вот теперь понятно. А то северо-запад, северо-запад...
Спасибо!
 
Ответить
СообщениеВот теперь понятно. А то северо-запад, северо-запад...
Спасибо!

Автор - Michael_S
Дата добавления - 12.03.2013 в 20:29
ikki Дата: Вторник, 12.03.2013, 20:31 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
нет. кажется, это не то sad
это будет проверять листы диаграмм, но не диаграммы на рабочих листах.

для таких диаграмм пока пришло в голову вот такое:
[vba]
Код
Sub test()
    For Each w In ThisWorkbook.Worksheets
        For Each s In w.Shapes
            If s.Type = msoChart Then MsgBox "есть!!!": Exit Sub
        Next
    Next
End Sub
[/vba]


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki


Сообщение отредактировал ikki - Вторник, 12.03.2013, 20:34
 
Ответить
Сообщениенет. кажется, это не то sad
это будет проверять листы диаграмм, но не диаграммы на рабочих листах.

для таких диаграмм пока пришло в голову вот такое:
[vba]
Код
Sub test()
    For Each w In ThisWorkbook.Worksheets
        For Each s In w.Shapes
            If s.Type = msoChart Then MsgBox "есть!!!": Exit Sub
        Next
    Next
End Sub
[/vba]

Автор - ikki
Дата добавления - 12.03.2013 в 20:31
RAN Дата: Вторник, 12.03.2013, 20:42 | Сообщение № 7
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Миш, попробуй так
[vba]
Код
Sub qq()
Application.DisplayAlerts = False
For Each sh In Sheets
If sh.Type = 3 Then sh.Delete
Next
Application.DisplayAlerts = True
End Sub
[/vba]

А дальше твой макрос.

Правда у меня от него excel вылетает. wacko

PS именно Sheets, а не Worksheets. Лист диаграммы в коллекцию Worksheets не входит.


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Вторник, 12.03.2013, 20:44
 
Ответить
СообщениеМиш, попробуй так
[vba]
Код
Sub qq()
Application.DisplayAlerts = False
For Each sh In Sheets
If sh.Type = 3 Then sh.Delete
Next
Application.DisplayAlerts = True
End Sub
[/vba]

А дальше твой макрос.

Правда у меня от него excel вылетает. wacko

PS именно Sheets, а не Worksheets. Лист диаграммы в коллекцию Worksheets не входит.

Автор - RAN
Дата добавления - 12.03.2013 в 20:42
Michael_S Дата: Вторник, 12.03.2013, 20:44 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
Цитата (ikki)
нет. кажется, это не то
То, то. Мне как раз таки лист диаграммы и нужен. biggrin
Но второй макрос тоже может быть пригодится.


Сообщение отредактировал Michael_S - Вторник, 12.03.2013, 20:46
 
Ответить
Сообщение
Цитата (ikki)
нет. кажется, это не то
То, то. Мне как раз таки лист диаграммы и нужен. biggrin
Но второй макрос тоже может быть пригодится.

Автор - Michael_S
Дата добавления - 12.03.2013 в 20:44
nilem Дата: Вторник, 12.03.2013, 20:46 | Сообщение № 9
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
или
[vba]
Код
Sub ttt()
If ActiveSheet.ChartObjects.Count > 1 Then
     MsgBox "You may create a new chart"
Else
     MsgBox ActiveSheet.ChartObjects(1).Chart.Name & " already exists"
End If
End Sub
[/vba]


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениеили
[vba]
Код
Sub ttt()
If ActiveSheet.ChartObjects.Count > 1 Then
     MsgBox "You may create a new chart"
Else
     MsgBox ActiveSheet.ChartObjects(1).Chart.Name & " already exists"
End If
End Sub
[/vba]

Автор - nilem
Дата добавления - 12.03.2013 в 20:46
Michael_S Дата: Вторник, 12.03.2013, 20:55 | Сообщение № 10
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
Цитата (RAN)
Миш, попробуй так
Андрей, в принципе можно и так, но мне нет необходимости каждый раз удалять диаграмму.
Один раз создать, а дальше только диапазон изменять. Можно, конечно, применить таблицу (тогда для ее размеры нужно менять) или применить именованный диапазон (не хочется)...
 
Ответить
Сообщение
Цитата (RAN)
Миш, попробуй так
Андрей, в принципе можно и так, но мне нет необходимости каждый раз удалять диаграмму.
Один раз создать, а дальше только диапазон изменять. Можно, конечно, применить таблицу (тогда для ее размеры нужно менять) или применить именованный диапазон (не хочется)...

Автор - Michael_S
Дата добавления - 12.03.2013 в 20:55
RAN Дата: Вторник, 12.03.2013, 21:05 | Сообщение № 11
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
А тебе какая разница - новую создавать, или диапазон менять? Чай не ручками. smile


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеА тебе какая разница - новую создавать, или диапазон менять? Чай не ручками. smile

Автор - RAN
Дата добавления - 12.03.2013 в 21:05
Матраскин Дата: Среда, 13.03.2013, 10:18 | Сообщение № 12
Группа: Друзья
Ранг: Обитатель
Сообщений: 375
Репутация: 81 ±
Замечаний: 0% ±

20xx
Michael_S,

когда то генерил 100500 диаграмм в отчётах, может что то поможет из этого кода(части кода)


в интернете опять кто-то не прав

Сообщение отредактировал Матраскин - Среда, 13.03.2013, 10:19
 
Ответить
СообщениеMichael_S,

когда то генерил 100500 диаграмм в отчётах, может что то поможет из этого кода(части кода)

Автор - Матраскин
Дата добавления - 13.03.2013 в 10:18
Мир MS Excel » Вопросы и решения » Вопросы по VBA » VBA. Как проверить, существует ли лист с диаграммой? (Если нет, то создать, если есть - назначить новые данные.)
  • Страница 1 из 1
  • 1
Поиск:

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