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

Вход

Регистрация

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

 

= Мир MS Excel/Как выделить несколько автофигур - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как выделить несколько автофигур (Макросы/Sub)
Как выделить несколько автофигур
K32 Дата: Среда, 19.03.2014, 10:06 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Перебором нахожу нужные мне автофигуры и выделяю с помощью .Select
Но по завершении макроса оказывается выделенной только последняя автофигура.
Что делать?
 
Ответить
СообщениеПеребором нахожу нужные мне автофигуры и выделяю с помощью .Select
Но по завершении макроса оказывается выделенной только последняя автофигура.
Что делать?

Автор - K32
Дата добавления - 19.03.2014 в 10:06
KuklP Дата: Среда, 19.03.2014, 10:07 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Макрорекордер не работает?


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеМакрорекордер не работает?

Автор - KuklP
Дата добавления - 19.03.2014 в 10:07
K32 Дата: Среда, 19.03.2014, 10:10 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
KuklP, вообще макрорекордер работает, но на автофигуры не реагирует.
 
Ответить
СообщениеKuklP, вообще макрорекордер работает, но на автофигуры не реагирует.

Автор - K32
Дата добавления - 19.03.2014 в 10:10
_Boroda_ Дата: Среда, 19.03.2014, 10:14 | Сообщение № 4
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
В 2007 Excel макрорекодер шальной насчет графики. Переставьте 2010 или 2013
А по коду примерно так
[vba]
Код
ActiveSheet.Shapes.Range(Array("Rectangle 1", "Rectangle 3", "Rectangle 5")).Select
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеВ 2007 Excel макрорекодер шальной насчет графики. Переставьте 2010 или 2013
А по коду примерно так
[vba]
Код
ActiveSheet.Shapes.Range(Array("Rectangle 1", "Rectangle 3", "Rectangle 5")).Select
[/vba]

Автор - _Boroda_
Дата добавления - 19.03.2014 в 10:14
KuklP Дата: Среда, 19.03.2014, 10:19 | Сообщение № 5
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Ну да. 07 это вообще недоразумение. Мелким тупо хотелось денег :D


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеНу да. 07 это вообще недоразумение. Мелким тупо хотелось денег :D

Автор - KuklP
Дата добавления - 19.03.2014 в 10:19
K32 Дата: Среда, 19.03.2014, 10:20 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
А как быть в моем случае?

[vba]
Код
Dim s As Shape
For Each s In Лист1.Shapes
If Mid(s.Name, 1, 1) = "У" Then s.Select
Next s
[/vba]
 
Ответить
СообщениеА как быть в моем случае?

[vba]
Код
Dim s As Shape
For Each s In Лист1.Shapes
If Mid(s.Name, 1, 1) = "У" Then s.Select
Next s
[/vba]

Автор - K32
Дата добавления - 19.03.2014 в 10:20
KuklP Дата: Среда, 19.03.2014, 10:27 | Сообщение № 7
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Собирайте в массив нужные имена, потом этот массив выделяйте.
А вообще читайте правила, выкладывайте пример. За Вас примеры рисовать желающих мало.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеСобирайте в массив нужные имена, потом этот массив выделяйте.
А вообще читайте правила, выкладывайте пример. За Вас примеры рисовать желающих мало.

Автор - KuklP
Дата добавления - 19.03.2014 в 10:27
K32 Дата: Среда, 19.03.2014, 10:53 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
KuklP, собрал нужные имена в массив ns, количество cs, как этот массив выделить?
 
Ответить
СообщениеKuklP, собрал нужные имена в массив ns, количество cs, как этот массив выделить?

Автор - K32
Дата добавления - 19.03.2014 в 10:53
KuklP Дата: Среда, 19.03.2014, 10:54 | Сообщение № 9
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
За Вас примеры рисовать желающих мало.
Где пример с Вашими попытками?


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728


Сообщение отредактировал KuklP - Среда, 19.03.2014, 10:56
 
Ответить
Сообщение
За Вас примеры рисовать желающих мало.
Где пример с Вашими попытками?

Автор - KuklP
Дата добавления - 19.03.2014 в 10:54
K32 Дата: Среда, 19.03.2014, 11:05 | Сообщение № 10
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Прикладываю пример.
К сообщению приложен файл: 16400.xlsm (62.6 Kb)
 
Ответить
СообщениеПрикладываю пример.

Автор - K32
Дата добавления - 19.03.2014 в 11:05
KuklP Дата: Среда, 19.03.2014, 11:18 | Сообщение № 11
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Вы уверены, что на листе есть ВСЕ шейпы с такими именами? Я уверен, что нет. В общем случае макрос выглядит так:
[vba]
Код
Sub ВВ()
     Dim ns(1 To 999) As String
     Dim cs As Integer
     cs = Лист4.Cells(1, 1) - 1
     For i = 3 To cs + 1
         ns(i - 2) = Лист4.Cells(i, 1)
     Next i
     ActiveSheet.DrawingObjects(ns).Select
End Sub
[/vba]
Но лучше перебирать на листе фигуры и имена нужных заносить в массив через redim preserve.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеВы уверены, что на листе есть ВСЕ шейпы с такими именами? Я уверен, что нет. В общем случае макрос выглядит так:
[vba]
Код
Sub ВВ()
     Dim ns(1 To 999) As String
     Dim cs As Integer
     cs = Лист4.Cells(1, 1) - 1
     For i = 3 To cs + 1
         ns(i - 2) = Лист4.Cells(i, 1)
     Next i
     ActiveSheet.DrawingObjects(ns).Select
End Sub
[/vba]
Но лучше перебирать на листе фигуры и имена нужных заносить в массив через redim preserve.

Автор - KuklP
Дата добавления - 19.03.2014 в 11:18
KuklP Дата: Среда, 19.03.2014, 11:24 | Сообщение № 12
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
В Вашем случае:
Dim s As Shape
For Each s In Лист1.Shapes
If instr(1,s.Name,"У") Then ... заносим в массив


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728


Сообщение отредактировал KuklP - Среда, 19.03.2014, 11:24
 
Ответить
СообщениеВ Вашем случае:
Dim s As Shape
For Each s In Лист1.Shapes
If instr(1,s.Name,"У") Then ... заносим в массив

Автор - KuklP
Дата добавления - 19.03.2014 в 11:24
K32 Дата: Среда, 19.03.2014, 11:33 | Сообщение № 13
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
ActiveSheet.DrawingObjects(ns).Select выдал ошибку Run-time error 1004 Method 'DrawingObjects' of object '_Worksheet' failed
исправил на
ActiveSheet.Shapes.Range(ns).Select
и заработало.
Спасибо! hands
 
Ответить
СообщениеActiveSheet.DrawingObjects(ns).Select выдал ошибку Run-time error 1004 Method 'DrawingObjects' of object '_Worksheet' failed
исправил на
ActiveSheet.Shapes.Range(ns).Select
и заработало.
Спасибо! hands

Автор - K32
Дата добавления - 19.03.2014 в 11:33
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как выделить несколько автофигур (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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