Написать комментарий | |
Илья Surname
11-03-2010 12:24 (ссылка)
Сергей Пилипенко
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"
И обращайся дальше к нему по имени, каким бы он по счету ни был.
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 (ссылка)
Александр Липчук
13-03-2010 20:34 (ссылка)
Написать комментарий | ||
Заключается оно в следующем: в ВБА можно ссылаться на листа как по их имени (что пробовал я), так и по их порядковому номеру в книге (соответствует позиции вкладки листа с лева на право).
Таким образом можно вставить лист в нужное место (например крайний слева - соответствует первой позиции) и потом по ходу программы ссылаться на крайний левый (то есть первый) лист.
Вот код для этого примера:
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