Все игры
Запись

О добавлении новых листов


Написать комментарий


Илья Surname      11-03-2010 12:24 (ссылка)
Re: О добавлении новых листов
О, кажется нашел решение.!
Заключается оно в следующем: в ВБА можно ссылаться на листа как по их имени (что пробовал я), так и по их порядковому номеру в книге (соответствует позиции вкладки листа с лева на право).
Таким образом можно вставить лист в нужное место (например крайний слева - соответствует первой позиции) и потом по ходу программы ссылаться на крайний левый (то есть первый) лист.

Вот код для этого примера:

Sub Copy_range_to_anotherSheet()

Workbooks("create a sheet then copy range from one sheet to another.xls").Sheets.Add Before:=Worksheets("Original") 'äîáàâëÿåò íîâûé ëèñò â êíèãó

Workbooks("create a sheet then copy range from one sheet to another.xls").Worksheets("Original").Range("D5:E10").Copy 'Êîïèðóåò äèàïàçîí ñ ñóùåñòâóþùåãî ëèñòà
Sheets(1).Select
Workbooks("create a sheet then copy range from one sheet to another.xls").Worksheets(1).Range("D5:E10").Select
ActiveSheet.Paste ' âñòàâëÿåò ñêîïèðîâàííûé äèàïàçîí íà íîâûé ëèñò, â óêàçàííîì ìåñòå - D5:E10

Application.CutCopyMode = False 'îòêëþ÷àåò ðåæèì êîïèðîâàíèÿ ÿ÷ååê


End Sub
Сергей Пилипенко      11-03-2010 17:04 (ссылка)
Re: О добавлении новых листов
А лучше так:
Application.DisplayAlerts = False
For Each ws In ThisWorkbook.Sheets
If ws.Name = "Data_copy" Then ws.Delete
Next
Application.ScreenUpdating = False

ThisWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count)
Worksheets(Worksheets.Count).Name = "Data_copy"
И обращайся дальше к нему по имени, каким бы он по счету ни был.
Сергей Пилипенко      11-03-2010 17:49 (ссылка)
Re: О добавлении новых листов
И еще(так быстрее):
Worksheets("Original").Range("D5:E10").Copy Worksheets( "Data_copy").Range("D5")
Александр Липчук      13-03-2010 20:34 (ссылка)
Re: О добавлении новых листов
Весна играет со мной.... Одни стихи в голове и женщины. И хорошо, и плохо. работа затормозилась...

Написать комментарий