Страницы: 1
RSS
Как запустить цикл только по определенным (выделенным мышкой) листам книги?, на VBA
 
Сейчас так:
Код
    For Each sh In Sheets
        sh.Activate
        ...        'много букв
    Next
Работа ведется по всем листам книги.


А как сделать цикл только по выделенным листам, которые выделяем в обычном окне Excel, мышкой, перед запуском макроса?
 
Код
For Each sh In ActiveWindow.SelectedSheets
кстати, в большинстве случаев активировать лист вообще нет нужды.
Изменено: The_Prist - 08.12.2016 14:12:52
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Пример из штатной справки
Код
For Each sh In Workbooks("BOOK1.XLS").Windows(1).SelectedSheets
    If sh.Name = "Sheet1" Then
        MsgBox "Sheet1 is selected"
        Exit For
    End If
Next
Согласие есть продукт при полном непротивлении сторон
 
Цитата
The_Prist написал: кстати, в большинстве случаев активировать лист вообще нет нужды.
Действительно, в моем случае это почти не нужно. Спасибо, подтолкнули в правильном направлении, причесал скрипт, убрал ненужные Activate.

Цитата
Sanja написал: Пример из штатной справки
Справка — это первое, что я пытаюсь использовать. Но по непонятной причине она у меня пропала: http://prntscr.com/dguwcg , поэтому приходится гуглить каждую проблему.
Приведенный вами пример мне не совсем подходит (вернее, не подходит), т.к. у меня нет задачи запустить скрипт только на одном, заранее определенном листе. Мне надо запускать скрипт на разных Листах в разных Книгах (в том числе сгенерированных другими скриптами), и комбинации Листов каждый раз могут быть разные.


Цитата
The_Prist написал:For Each sh In ActiveWindow.SelectedSheets
спасибо, опять выручили! То, что нужно.

А нет у кого-нибудь ссылки со списком всех Объектов + их Свойства и Методы?
Пока всё, что я нагуглил — там не было свойства "SelectedSheets".
 
Цитата
zamboga написал: мне не совсем подходит (вернее, не подходит)
ну это, как-бы, ПРИМЕР.
Самому допилить не вариант не интересно?
Согласие есть продукт при полном непротивлении сторон
 
Цитата
zamboga написал:
Приведенный вами пример мне не совсем подходит (вернее, не подходит)
zamboga, вариант (принцип перебора выделенных листов), который предлагает Sanja, точно такой же, как и у The_Prist
 
Цитата
Sanja написал:
Самому допилить не вариант не интересно?
Ещё как интересно. Наоборот, сижу, ковыряю VBA вместо основной работы=))

Sanja, Юрий М, я не заметил, что в примере Sanja там тоже .SelectedSheets. Мой комментарий относился к If...Then
Код
    If sh.Name = "Sheet1" Then
        MsgBox "Sheet1 is selected"
        Exit For
    End If
 
Цитата
zamboga написал:
А нет у кого-нибудь ссылки со списком всех Объектов + их Свойства и Методы?
Допустим, был бы такой список. С десятком тысяч строк. Что бы Вы с ним делали?
В VBA есть Object Browser (вызывается по F2), который позволяет делать поиск по всем библиотекам или по выбранной. В данном случае Вас интересуют "выделенные листы", т.е. название свойства должно содержать что-то типа "sel", "select", "selected". Пробуя первое и второе, получаем слишком большой список, а третье быстро выводит на нужное свойство.
 
Казанский, нажал F2, много думал=))

Все, что я пока нашел в сети, носит разрозненный характер, и я не думал, что объектов так много, поэтому и попросил его список с полным описанием.

Я в свое время нагуглил и изучил такие объекты, как [Application, Workbooks, Workbook, Sheets, Worksheets, Worksheet, Rows, Columns, Range].
Но подозревал, что объектов больше, чем этот список, т.к. как минимум, я еще знаю ActiveWorkbook, ActiveSheet, ActiveWindow.
Кроме того, для многих функций и объектов в VBA после их написания и установки "точки" выводится список их свойств и методов (.Count, .Select и т.д.)

Я не всегда понимаю разницу между, например, Worksheets и Sheets, Worksheet и Sheet, поэтому приходится каждый раз гуглить.
В общем, мне пока очень не хватает справочника по базовым объектам/функциям и их синтаксису.
 
Цитата
zamboga написал: например, Worksheets и Sheets, Worksheet и Sheet
По каждому слову читайте справку. Надеюсь, поймёте разницу.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
JayBhagavan,
Цитата
zamboga написал:
Справка — это первое, что я пытаюсь использовать. Но по непонятной причине она у меня пропала:  http://prntscr.com/dguwcg  , поэтому приходится гуглить каждую проблему.
 
Доброе время суток
Цитата
zamboga написал:
поэтому приходится гуглить каждую проблему.
Точно? Ни разу не попадалось? Может в закладки? Или даже?
Успехов.
 
конечно, это попадалось. Я ищу по-русски, типа http://vba-help.ru/vbahelp/excel/Worksheet/
Страницы: 1
Наверх