Копирование листа

Программирование на Visual Basic for Applications
DIKI
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 30.09.2003 (Вт) 17:41

Копирование листа

Сообщение DIKI » 13.10.2003 (Пн) 13:42

В Excel можно скопировать одной командой группу листов:
Sheets(Array("Лист1", "Лист2", "Лист3")).Copy Before:=Sheets(1)
Можно ли наподобие этого скопировать одной командой один лист
т.е. что -то вроде
Sheets(Array("Лист1", "Лист1", "Лист1")).Copy Before:=Sheets(1)

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 13.10.2003 (Пн) 14:42

Можно:
1)Войди в меню сервис-макрос-начать запись.
2) Скопируй лист.
3)Войди в меню сервис-макрос-остановить запись.
4) Зайди в редактор VBA и посмотри код макроса "Ты все поймешь, ты все увидишь там!"

DIKI
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 30.09.2003 (Вт) 17:41

Сообщение DIKI » 13.10.2003 (Пн) 15:07

Это все понятно я знаю как скопировать в цикле лист.
Dim i As Long
For i = 1 To 20
Sheets("Лист1").Copy After:=Sheets(2)
Next i

Меня интересовало можно ли его н-цать раз скопировать без использования
цикла что то вроде наподобие копирования группы листов
Потомучто копирование группы листов работает быстрее нежели копирование одного листа в цикле

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 13.10.2003 (Пн) 15:08

RTFM, однозначно.

Не догадаться что ли что Sheets ("Лист1").Copy сработает?

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 13.10.2003 (Пн) 15:14

Не догадаться что ли что Sheets ("Лист1").Copy сработает

Сам удивляюсь, почему не догадался :lol:

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 13.10.2003 (Пн) 15:25

Код: Выделить всё
Меня интересовало можно ли его н-цать раз скопировать без использования
цикла что то вроде наподобие копирования группы листов
Потомучто копирование группы листов работает быстрее нежели копирование одного листа в цикле

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

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 13.10.2003 (Пн) 15:54

Еще, кое что придумал, чтобы не повторять 20 раз:

стало 2
Sheets(Array("Лист1")).Copy Before:=Sheets(1)
стало 4
Sheets(Array("Лист1 (2)", "Лист1")).Copy Before:=Sheets(1)
стало 8
Sheets(Array("Лист1 (4)", "Лист1 (3)", "Лист1 (2)", "Лист1")).Copy Before:=Sheets(1)
стало 16
Sheets(Array("Лист1 (8)", "Лист1 (7)", "Лист1 (6)", "Лист1 (5)", "Лист1 (4)", "Лист1 (3)", "Лист1 (2)", "Лист1")).Copy Before:=Sheets(1)
стало 20
Sheets(Array("Лист1 (4)", "Лист1 (3)", "Лист1 (2)", "Лист1")).Copy Before:=Sheets(1)

п.с. неужели в цыкле значительно дольше?

DIKI
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 30.09.2003 (Вт) 17:41

Сообщение DIKI » 13.10.2003 (Пн) 16:10

Я думал над таким вариантом если нечего не найду воспользуюсь им.
Я из Басика вызываю Excel и цикл из 20 листов выполняется 7 секунд
А копирование группы из 20 листов 1.4 секунды

Calvin
Постоялец
Постоялец
 
Сообщения: 409
Зарегистрирован: 21.01.2003 (Вт) 12:13
Откуда: Sebastopol

Сообщение Calvin » 01.08.2005 (Пн) 15:54

Здраствуйте уважаемые!!!
Вот решил не создавать новой темы и продолжить эту. Поиск тоже затянулся и не дал результата. Помогите.
Хочу скопировать лист в этой же книге сразу же присвоив ему имя (код в одну строку)???
К сожеления получается только так:
Код: Выделить всё
ActiveWorkbook.Sheets("лист1").Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).name="мой_лист"

а хотелось бы как-нить так:
Код: Выделить всё
ActiveWorkbook.Sheets("лист1").Copy(After:=Sheets(Sheets.Count)).Name = "мой_лист"
-Whose the motocycle, is this? -It`s a chopper, baby! -Whose chopper is this? -Zed`s! -Who is Zed? -Zed`s dead, baby, Zed`s dead! :-D

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 01.08.2005 (Пн) 16:47

Боюсь что так не получится потому что Copy не возвращает в данном случае никакой объектной переменной.


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 64

    TopList