2015-04-14 4 views
0

Я работаю над циклом for, который берет запись на первой странице рабочего листа и копирует и вставляет ее на оставшиеся листы в книге с размером массива Worksheets.Count. В частности, мне трудно найти способ вызова каждой таблицы в каждом конкретном листе. Я пытался выбрать таблицу на основе счетчика в цикле for так, чтобы:Copy/Paste For Loop

For i=1 to Worksheets.count 
    Range.("Table(Counter").Select 
Next i 

но он не работает. Есть ли лучший способ убедиться, что мой код выбирает правильную таблицу в каждом следующем рабочем листе? Я все еще довольно новичок в VBA, поэтому всякая помощь приветствуется!

ответ

1

Если вы используете счетчик, я предполагаю, что ваши таблицы называются Table1, Table2, и так далее для каждого листа. Проблема заключается в том, что вам необходимо убедиться, что индекс рабочего листа находится в той же последовательности, что и ваша таблица.

Вы можете попробовать эту альтернативу, которая не зависит от последовательности рабочего листа и имени Tables.

Dim sh As Worksheet 

For Each sh In ThisWorkbook.Worksheets 
    sh.ListObjects(1).Range.Select 
    ' to check if you got the correct object, add below line 
    Debug.Print sh.ListObjects(1).Range.Address(, , , True) 
Next 

Выше рассматривает вас есть только один (1) Table в каждом листе.

+0

Отлично, спасибо! Единственная проблема заключается в том, что после первого цикла он не переходит к следующему листу книги книги. Как я могу это исправить? – chs

+0

@Jamie Что значит, что он не подходит к следующему листу. Это приведет к повторению каждой рабочей таблицы в книге. – L42

+0

После того, как он выполняет итерацию через первую таблицу, он выбирает следующую таблицу на следующем листе, но не добавляет строку. Он дает ошибку «Невозможно выбрать метод класса диапазона». Опять же, спасибо за помощь до сих пор, и я надеюсь, что этот комментарий поможет. – chs