Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 08.06.2018, 13:43   #11
Hugo121
Профессионал
 
Регистрация: 11.05.2010
Сообщений: 4,999
Репутация: 464
По умолчанию

Берёте названия в коллекцию (ну или считаете количество), объявляете такой массив, набиваете его именами/названиями, используете.
Например:
Код:

Sub tt()
    Dim col As New Collection, c As Range, i&
    For Each c In [a1].CurrentRegion.Cells
        col.Add Trim(c)
    Next
    ReDim arr(0 To col.Count - 1)
    For i = 1 To col.Count: arr(i - 1) = col(i): Next
    Worksheets(arr).Select
End Sub

__________________
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 08.06.2018 в 13:48.
Hugo121 на форуме   Ответить с цитированием
Старый 08.06.2018, 23:50   #12
autostavrroute
Пользователь
 
Регистрация: 07.06.2018
Сообщений: 28
Репутация: 10
По умолчанию

Private Sub Кнопка37_Щелчок()

Dim Lar As Variant
Lar = Sheets("График").Range("D5")
Sheets(Lar).Select
End Sub

Так работает но для одной ячейки и выделяет одноименный лист. Как правильно описать если
Lar = Sheets("График").Range("D5:F5")

Последний раз редактировалось autostavrroute; 09.06.2018 в 02:41.
autostavrroute вне форума   Ответить с цитированием
Старый 09.06.2018, 01:20   #13
IgorGO
МегаМодератор
СуперМодератор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Адрес: УКРАЇНА, Київ
Сообщений: 8,996
Репутация: 1710

icq: 7934250
skype: i2x0,5
По умолчанию

Lar = Sheets("График").Range("D5:D8").Val ue
__________________
41001804815208 - Яндекс-деньги благодарности за удачные советы и решения можно отправлять прямо сюда)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO на форуме   Ответить с цитированием
Старый 09.06.2018, 02:43   #14
autostavrroute
Пользователь
 
Регистрация: 07.06.2018
Сообщений: 28
Репутация: 10
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
Lar = Sheets("График").Range("D5:D8").Val ue
Я так понимаю тут нужен алгоритм переобъявления массива ReDim Lar - но что-то я не соберу все в кучу.
autostavrroute вне форума   Ответить с цитированием
Старый 09.06.2018, 02:45   #15
autostavrroute
Пользователь
 
Регистрация: 07.06.2018
Сообщений: 28
Репутация: 10
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Берёте названия в коллекцию (ну или считаете количество), объявляете такой массив, набиваете его именами/названиями, используете.
Например:
Код:

Sub tt()
    Dim col As New Collection, c As Range, i&
    For Each c In [a1].CurrentRegion.Cells
        col.Add Trim(c)
    Next
    ReDim arr(0 To col.Count - 1)
    For i = 1 To col.Count: arr(i - 1) = col(i): Next
    Worksheets(arr).Select
End Sub

Наверно написано то что надо, но не могу связать со своим примером и привязкой к ячейкам на листе График где перечислены названия листов которые надо выделить одновременно.
autostavrroute вне форума   Ответить с цитированием
Старый 09.06.2018, 11:04   #16
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,601
Репутация: 5352
По умолчанию

Цитата:
Сообщение от autostavrroute Посмотреть сообщение
Наверно написано то что надо, но не могу связать со своим примером и привязкой к ячейкам на листе График
так:
Код:

Sub SelectSheetsByRange()
 Dim col As New Collection, c As Range, i&
 For Each c In Sheets("График").Range("D5:F5").Cells
        col.Add Trim(c)
 Next
 ReDim arr(0 To col.Count - 1)
 For i = 1 To col.Count: arr(i - 1) = col(i): Next
 Worksheets(arr).Select
End Sub

Serge_Bliznykov вне форума   Ответить с цитированием
Старый 09.06.2018, 13:03   #17
autostavrroute
Пользователь
 
Регистрация: 07.06.2018
Сообщений: 28
Репутация: 10
По умолчанию

Код:

Sub SelectSheetsByRange()
 Dim col As New Collection, c As Range, i&, k&
 
 For k = 4 To 17
 If Not Sheets("График").Cells(5, k).Value = "" Then coll.Add Sheets(k).Name
 Next
 
' For Each c In Sheets("График").Range("D5:Z5").Cells
'        col.Add Trim(c)
' Next

 ReDim arr(0 To col.Count - 1)
 For i = 1 To col.Count: arr(i - 1) = col(i): Next
 Worksheets(arr).Select
  
End Sub

Хотел модифицировать на обработку ячеек с пробелами. Но что-то написал не верно.

Предыдущий вариант работает на УРА.


_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось autostavrroute; 09.06.2018 в 13:22.
autostavrroute вне форума   Ответить с цитированием
Старый 12.06.2018, 10:48   #18
autostavrroute
Пользователь
 
Регистрация: 07.06.2018
Сообщений: 28
Репутация: 10
По умолчанию

Цитата:
Сообщение от autostavrroute Посмотреть сообщение
ячеек с пробелами
Точнее сказать "Пустых ячеек" Если не трудно исправьте ошибку.

Цитата:
Сообщение от autostavrroute Посмотреть сообщение
For k = 4 To 17
If Not Sheets("График").Cells(5, k).Value = "" Then coll.Add Sheets(k).Name
Next
Несколько не ладится в этой части макроса.
autostavrroute вне форума   Ответить с цитированием
Старый 12.06.2018, 11:24   #19
Aleksandr H.
2 the Nation Glory
Профессионал
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Адрес: Wild West Ukraine
Сообщений: 2,476
Репутация: 885
По умолчанию

Код:

If Sheets("График").Cells(5, k).Value <> "" Then coll.Add Sheets(k).Name


[offtop]2 страницы трепа, а можно было в 1ом сообщении приклеить файла с тестовыми данным, написать "Вот файл, вот список страниц, хочу нажать кнопку и чтоб листы со списка выделились". Я бы предложил их удалить, а дальше коллеги бы наваяли рабочий код. Итого макс на 5 сообщении был бы получен ответ. Но то такое, лирика. [/offtop]
__________________
Mailto: media.project@ukr.net
Aleksandr H. вне форума   Ответить с цитированием
Старый 12.06.2018, 12:09   #20
autostavrroute
Пользователь
 
Регистрация: 07.06.2018
Сообщений: 28
Репутация: 10
По умолчанию

Оператор Not там стоит верно - он проверяет если ячейка не пустая тогда добавляет ее в массив. Ошибка где то рядом)
autostavrroute вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
выделение нескрытых листов книги Jaroslav Microsoft Office Excel 4 27.05.2014 16:10
VBA - выделение группы листов Tihon Microsoft Office Excel 14 09.01.2013 20:46
Поиск по списку gavrylyuk Microsoft Office Excel 6 25.03.2010 17:24
Загрузка по списку jkpro Работа с сетью в Delphi 23 24.09.2009 17:26
выделение листов по условию Bronyk Microsoft Office Excel 5 11.03.2008 20:40


18:40.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru