|
|
|
Как обратиться ко всем листам рабочей книги?
|
|||
|---|---|---|---|
|
#18+
Добрый день, купил несколько книг по 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 только на листе, где у меня кнопка для запуска этого макроса? Помогите пожалуйста уже неделю голову ломаю… ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2007, 10:09:18 |
|
||
|
Как обратиться ко всем листам рабочей книги?
|
|||
|---|---|---|---|
|
#18+
Вы не циклы не знаете, вы не знаете как к ячейке обращаться! :-) Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2007, 10:17:22 |
|
||
|
Как обратиться ко всем листам рабочей книги?
|
|||
|---|---|---|---|
|
#18+
Большое спасибо, когда синтаксис не знаю ...хех ... тяжело 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 И еще вопрос можно? Если я автоматический макрос написал, то как его запустить в цикле, чтобы он на всех листах выполнился? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2007, 10:51:36 |
|
||
|
Как обратиться ко всем листам рабочей книги?
|
|||
|---|---|---|---|
|
#18+
GhostProgram For Each ws In Worksheets ws.Range("C3").Value = "Напечатать" 1) еще варианты: Код: plaintext 1. 2. Код: plaintext 1. 2. GhostProgramCells(1.1).CurrentRegion.Select ' а для cells ws впереди ставлю и не выделяет диапазон ошибка?! 2) Это потому что для использования метода Select в отношении диапазона ячеек, сначала нужно необходимо, чтобы лист содержащий данный диапазон был активным, попробуй: Код: plaintext 1. 2. 3. 4. GhostProgramа если без ws, то выделяет диапазон на первом листе... 4) Это потому, что в процедуре находящейся в стандартном или другом модуле класса (кроме модуля Листа), диапазоны с неуказанным листом по-умолчанию принадлежат активному листу. Если же процедура находится в модуле Листа, то по-умолчанию диапазоны с неуказанным листом по-умолчанию принадлежат листу, в чьем модуле находится данная процедура. GhostProgramИ еще вопрос можно? Если я автоматический макрос написал, то как его запустить в цикле, чтобы он на всех листах выполнился? 5) Ничего не понял. А можно увидеть код "автоматического макроса"? KL [MVP - Microsoft Excel] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2007, 11:13:17 |
|
||
|
Как обратиться ко всем листам рабочей книги?
|
|||
|---|---|---|---|
|
#18+
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. GhostProgram И еще вопрос можно? Если я автоматический макрос написал, то как его запустить в цикле, чтобы он на всех листах выполнился? Это вообще не понял!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2007, 11:29:25 |
|
||
|
Как обратиться ко всем листам рабочей книги?
|
|||
|---|---|---|---|
|
#18+
Большое спасибо, теперь понял. А по поводу макроса - это мой глюк, заморочился ... Синтаксис у VBA сложноватый, пока разберешься... Очень приятно, что есть отзывчивые люди!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2007, 11:48:16 |
|
||
|
Как обратиться ко всем листам рабочей книги?
|
|||
|---|---|---|---|
|
#18+
Я имел ввиду не макрос а отдельную функцию, например: в рабочей книге на листах имеется однотипная информация, мне необходимо провести одинаковые операции на всех листах. Я пишу допустим функцию ... А как ее в цикл запихнуть? Какие-нибудь заморочки с ней будут,тип WS... или нет? Dim ws As Worksheet For Each ws In Worksheets ...??? - вот здесь как эта функция по синтаксису как будет выглядеть? Next ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2007, 12:03:08 |
|
||
|
Как обратиться ко всем листам рабочей книги?
|
|||
|---|---|---|---|
|
#18+
GhostProgramЯ имел ввиду не макрос а отдельную функцию, например: в рабочей книге на листах имеется однотипная информация, мне необходимо провести одинаковые операции на всех листах. Я пишу допустим функцию ... А как ее в цикл запихнуть? Какие-нибудь заморочки с ней будут,тип WS... или нет? Dim ws As Worksheet For Each ws In Worksheets ...??? - вот здесь как эта функция по синтаксису как будет выглядеть? Next По идее описываешь одно действие (один повтор) на примере одного какого нибуть листа! А потом везде вместо наименования листа подставляешь ws В случа если наименование листа не используешь, а работаешь с активным листом, то первая строка в Цикле ws.activate ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2007, 13:02:55 |
|
||
|
|

start [/forum/topic.php?fid=61&msg=34539344&tid=2182935]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
| others: | 197ms |
| total: | 338ms |

| 0 / 0 |
