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

Вход

Регистрация

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

 

= Мир MS Excel/Как заставить макрос работать не по ListObject, а по таблице - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как заставить макрос работать не по ListObject, а по таблице (Макросы/Sub)
Как заставить макрос работать не по ListObject, а по таблице
radioamator Дата: Вторник, 03.09.2019, 05:10 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Здравствуйте, уважаемые специалисты по VBA.
Помогите решить проблему.

Есть макрос, который по списку в таблице - накладывает отдельные фрагменты копии одной сгруппированной фигуры - на отдельно стоящую фигуру.

Но сейчас макрос работает по переменным, заданным с помощью команды ListColumns.
(Это видимо особый объект - саморасширяющийся список с сортировкой - в столбцах А:В)

Как выполнить тот же самый макрос - если таблица будет обычной и находится в координатах Y9:Z16 ?
К сообщению приложен файл: 3471204.xls(59.5 Kb)
 
Ответить
СообщениеЗдравствуйте, уважаемые специалисты по VBA.
Помогите решить проблему.

Есть макрос, который по списку в таблице - накладывает отдельные фрагменты копии одной сгруппированной фигуры - на отдельно стоящую фигуру.

Но сейчас макрос работает по переменным, заданным с помощью команды ListColumns.
(Это видимо особый объект - саморасширяющийся список с сортировкой - в столбцах А:В)

Как выполнить тот же самый макрос - если таблица будет обычной и находится в координатах Y9:Z16 ?

Автор - radioamator
Дата добавления - 03.09.2019 в 05:10
Pelena Дата: Вторник, 03.09.2019, 09:22 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 14473
Репутация: 3172 ±
Замечаний: ±

Excel 2010, 2016 & Mac Excel
Здравствуйте.
Замените эти строчки
[vba]
Код
    Set pLo = ActiveSheet.ListObjects(1)
    sourceNames = pLo.ListColumns("source").DataBodyRange.Value
    targetNames = pLo.ListColumns("target").DataBodyRange.Value
    For i = 1 To UBound(sourceNames)
        NextCloneAndMove ActiveSheet.Shapes(sourceNames(i, 1)), ActiveSheet.Shapes(targetNames(i, 1))
    Next
[/vba]
на
[vba]
Код
    sourceNames = Range("Y10:Y16").Value
    targetNames = Range("Z10:Z16").Value
    For i = 1 To UBound(sourceNames)
        If sourceNames(i, 1) <> "" Then NextCloneAndMove ActiveSheet.Shapes(sourceNames(i, 1)), ActiveSheet.Shapes(targetNames(i, 1))
    Next
[/vba]
И да, в диапазоне столбцы перепутаны, группы и названия


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
СообщениеЗдравствуйте.
Замените эти строчки
[vba]
Код
    Set pLo = ActiveSheet.ListObjects(1)
    sourceNames = pLo.ListColumns("source").DataBodyRange.Value
    targetNames = pLo.ListColumns("target").DataBodyRange.Value
    For i = 1 To UBound(sourceNames)
        NextCloneAndMove ActiveSheet.Shapes(sourceNames(i, 1)), ActiveSheet.Shapes(targetNames(i, 1))
    Next
[/vba]
на
[vba]
Код
    sourceNames = Range("Y10:Y16").Value
    targetNames = Range("Z10:Z16").Value
    For i = 1 To UBound(sourceNames)
        If sourceNames(i, 1) <> "" Then NextCloneAndMove ActiveSheet.Shapes(sourceNames(i, 1)), ActiveSheet.Shapes(targetNames(i, 1))
    Next
[/vba]
И да, в диапазоне столбцы перепутаны, группы и названия

Автор - Pelena
Дата добавления - 03.09.2019 в 09:22
radioamator Дата: Вторник, 03.09.2019, 10:56 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Pelena, спасибо за подсказку.
 
Ответить
СообщениеPelena, спасибо за подсказку.

Автор - radioamator
Дата добавления - 03.09.2019 в 10:56
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как заставить макрос работать не по ListObject, а по таблице (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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