Страницы: 1
RSS
Применить sub к некоторым листам.
 
Приветсвую!
Вопрос:
Есть VBA код. К примеру, такой:
Код
Sub writeA()
cells(1,1) = "A"
End Sub 
Теперь, данный код, мне надо применить к определённым листам в книге, к примеру листы 1,3,7,8.
Как это можно написать в VBA. гугл не помог. Видимо не правильно даю запрос.
Изменено: SanShiney - 31.01.2015 21:39:45
 
Можно циклом пробежаться по нужным именам листов и на каждом совершить это действие:
Код
Sub writeA()
Dim arrA (1 to 4) as string
Dim intI as integer
arrA=array(1,3,7,8)
For intI = Lbound(arrA) to Ubound(arrA)
Worksheets(arrA(intI)).cells(1,1) = "A"
Next intI 
End Sub
Изменено: Пытливый - 31.01.2015 13:21:28
Кому решение нужно - тот пример и рисует.
 
Пытливый, включили бы режим BB-Code и убрали бы ненужные теги.
С уважением,
Федор/Все_просто
 
Покороче:
Код
Sub test()
Dim elem
For Each elem In Array(1, 3)
    Worksheets(elem).Range("A1") = "A"
Next elem
End Sub
С уважением,
Федор/Все_просто
 
Цитата
Все_просто пишет: For Each elem In Array(1, 3)
Соответственно, 1 и 3 это нумерация листов, на которых надо прогнать этот код?
 
SanShiney, да, именно так.
С уважением,
Федор/Все_просто
 
Все_просто, большое спасибо!
 
Всё почти закончил.
Но остаётся один момент.
Заключается в следующем:

Киге есть набор листов. Из него, я выборочно выделяю те листы, на которых, мне надо прогнать свой макрос.



К примеру, как на рисунке.
Теперь, никак не могу найти, как можно "собрать" индексы выделенных страниц в массив?
Точнее, как в массив внести то я знаю, но вот как найти индексы всех выделенных страниц - вот это вопрос.

Подскажете? ;)
 
Доброе время суток
Как то так

Код
Public Sub DoWithSelected()
    Dim pSheet As Object
    'или
    'For Each pSheet In ActiveWindow.SelectedSheets
    'или
    For Each pSheet In ActiveWorkbook.Windows(1).SelectedSheets
        If TypeOf pSheet Is Worksheet Then
            'что-нибудь делаем
            pSheet.Cells(1, 1) = "A"
        End If
    Next
End Sub

 
Успехов.
 
Андрей VG, прекрасно! =)
Спасибо!
Страницы: 1
Наверх