powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как обратиться ко всем листам рабочей книги?
8 сообщений из 8, страница 1 из 1
Как обратиться ко всем листам рабочей книги?
    #34538844
GhostProgram
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, купил несколько книг по Ecxel и не могу найти там решение моей проблемы. Мне необходимо понять принцип обращения в Ecxel к объектам одного типа. Например, провести одно и то-же действие во всех листах одной рабочей книги, или например открыть все рабочие книги в папке...

Я понимаю, что здесь нужен цикл и в примерах нашел, но почему-то этот цикл не работает...к сожалению синтаксис VBA знаю плохо... Может кто пояснит, почему в этом цикле у меня только на первом листе печатает, а на других нет? И как с этим бороться?


Dim ws As Worksheet

For Each ws In Worksheets
Range("C3").Value = "Напечатать на всех листах книги"
Next

и так пробовал:

For Each ws In Workbooks("исходные данные").Worksheets
.....
Next

и так:
For i = 1 To wb.Worksheets.Count

Next i

Но все время выводится надпись на первом листе. Почему "Напечатать на всех листах книги" выводится в С3 только на листе, где у меня кнопка для запуска этого макроса? Помогите пожалуйста уже неделю голову ломаю…
...
Рейтинг: 0 / 0
Как обратиться ко всем листам рабочей книги?
    #34538864
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы не циклы не знаете, вы не знаете как к ячейке обращаться! :-)
Код: plaintext
1.
2.
For Each ws In Worksheets
ws.Range("C3").Value = "Напечатать на всех листах книги"
Next
...
Рейтинг: 0 / 0
Как обратиться ко всем листам рабочей книги?
    #34538951
GhostProgram
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большое спасибо, когда синтаксис не знаю ...хех ... тяжело

Private Sub CommandButton1_Click()
Dim ws As Worksheet

For Each ws In Worksheets
ws.Range("C3").Value = "Напечатать"
Cells(1.1).CurrentRegion.Select ' а для cells ws впереди ставлю и не выделяет диапазон ошибка?!
Next а если без ws, то выделяет диапазон на первом листе...

End Sub


И еще вопрос можно? Если я автоматический макрос написал, то как его запустить в цикле, чтобы он на всех листах выполнился?
...
Рейтинг: 0 / 0
Как обратиться ко всем листам рабочей книги?
    #34539013
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GhostProgram
For Each ws In Worksheets
ws.Range("C3").Value = "Напечатать"
1) еще варианты:

Код: plaintext
1.
2.
For Each ws In Workbooks("исходные данные").Worksheets
   ws.Range("C3").Value = "Напечатать"
Next

Код: plaintext
1.
2.
For i =  1  To wb.Worksheets.Count
   Worksheets(i).Range("C3").Value = "Напечатать"
Next i

GhostProgramCells(1.1).CurrentRegion.Select ' а для cells ws впереди ставлю и не выделяет диапазон ошибка?!
2) Это потому что для использования метода Select в отношении диапазона ячеек, сначала нужно необходимо, чтобы лист содержащий данный диапазон был активным, попробуй:

Код: plaintext
1.
2.
3.
4.
For Each ws In Workbooks("исходные данные").Worksheets
   ws.Activate 'если есть скрытые листы, то будет ошибка
   ws.Range("C3").Value = "Напечатать"
   ws.Cells( 1 , 1 ).Select
Next
3) В 99.9% случаев диапазоны выбирать (Select) нет необходимости, к тому же Select сильно замедляет код даже с использованием Application.ScreenUpdating=False

GhostProgramа если без ws, то выделяет диапазон на первом листе...
4) Это потому, что в процедуре находящейся в стандартном или другом модуле класса (кроме модуля Листа), диапазоны с неуказанным листом по-умолчанию принадлежат активному листу. Если же процедура находится в модуле Листа, то по-умолчанию диапазоны с неуказанным листом по-умолчанию принадлежат листу, в чьем модуле находится данная процедура.

GhostProgramИ еще вопрос можно? Если я автоматический макрос написал, то как его запустить в цикле, чтобы он на всех листах выполнился?
5) Ничего не понял. А можно увидеть код "автоматического макроса"?

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Как обратиться ко всем листам рабочей книги?
    #34539057
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GhostProgramБольшое спасибо, когда синтаксис не знаю ...хех ... тяжело

Private Sub CommandButton1_Click()
Dim ws As Worksheet

For Each ws In Worksheets
ws.Range("C3").Value = "Напечатать"
Cells(1.1).CurrentRegion.Select ' а для cells ws впереди ставлю и не выделяет диапазон ошибка?!
Next а если без ws, то выделяет диапазон на первом листе...

End Sub


Зачем выделять ячейки в цикле???
Но если нужно так так наверное можно!

Код: plaintext
1.
2.
3.
For Each ws In Worksheets
ws.Activate
Cells( 1 . 1 ).CurrentRegion.Select
Next      

GhostProgram
И еще вопрос можно? Если я автоматический макрос написал, то как его запустить в цикле, чтобы он на всех листах выполнился?
Это вообще не понял!!!
...
Рейтинг: 0 / 0
Как обратиться ко всем листам рабочей книги?
    #34539104
GhostProgram
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большое спасибо, теперь понял. А по поводу макроса - это мой глюк, заморочился ... Синтаксис у VBA сложноватый, пока разберешься...

Очень приятно, что есть отзывчивые люди!!!
...
Рейтинг: 0 / 0
Как обратиться ко всем листам рабочей книги?
    #34539151
GhostProgram
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я имел ввиду не макрос а отдельную функцию, например: в рабочей книге на листах имеется однотипная информация, мне необходимо провести одинаковые операции на всех листах. Я пишу допустим функцию ... А как ее в цикл запихнуть? Какие-нибудь заморочки с ней будут,тип WS... или нет?


Dim ws As Worksheet

For Each ws In Worksheets
...??? - вот здесь как эта функция по синтаксису как будет выглядеть?
Next
...
Рейтинг: 0 / 0
Как обратиться ко всем листам рабочей книги?
    #34539344
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GhostProgramЯ имел ввиду не макрос а отдельную функцию, например: в рабочей книге на листах имеется однотипная информация, мне необходимо провести одинаковые операции на всех листах. Я пишу допустим функцию ... А как ее в цикл запихнуть? Какие-нибудь заморочки с ней будут,тип WS... или нет?


Dim ws As Worksheet

For Each ws In Worksheets
...??? - вот здесь как эта функция по синтаксису как будет выглядеть?
Next

По идее описываешь одно действие (один повтор) на примере одного какого нибуть листа!
А потом везде вместо наименования листа подставляешь ws
В случа если наименование листа не используешь, а работаешь с активным листом, то первая строка в Цикле ws.activate
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как обратиться ко всем листам рабочей книги?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]