помогите с макросом для Эксель

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Аватара пользователя
Busine2009
Сообщения: 322
Зарегистрирован: 18 июл 2009, 15:34
Контактная информация:

dissonance
куда скопированный лист девать?
dissonance
Сообщения: 9
Зарегистрирован: 13 май 2010, 20:58

содержимое предыдущего листа необходимо скопировать в новый лист (который создает макрос)
dissonance
Сообщения: 9
Зарегистрирован: 13 май 2010, 20:58

и что потом делается с этим листом? Зачем он копируется?

Кроме первого пункта (т.к. смысл не понятен)
Busine2009, твой код не работает. так как внутренняя нумерация листов Экселя не совпадает с нумерацией имен листов.
эксель создает лист с названием "83", а должен "1071" и стопориться в строчке указания даты.
прилагаю скрин чтобы было понятней.
Вложения
scr1.jpg
dissonance
Сообщения: 9
Зарегистрирован: 13 май 2010, 20:58

помогите дописать, плиз. тем более основная часть уже написана
Аватара пользователя
Busine2009
Сообщения: 322
Зарегистрирован: 18 июл 2009, 15:34
Контактная информация:

dissonance
Макрос копирует самый последний лист и вставляет его в самом конце.

Код: Выделить всё

Sub Макрос1()
Sheets(Sheets.Count).Copy after:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = Sheets(Sheets.Count - 1).Name + 1
Sheets(ActiveWorkbook.Sheets.Count).Range("A1").Value = "10У-" & ActiveWorkbook.Sheets.Count
ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count).Range("A2").Value = Date
End Sub
dissonance
Сообщения: 9
Зарегистрирован: 13 май 2010, 20:58

Busine2009, спасибо что помогаешь! ;) но вот какая шляпа:
dissonance писал(а):Busine2009, твой код не работает. так как внутренняя нумерация листов Экселя не совпадает с нумерацией имен листов.
эксель создает лист с названием "83", а должен "1071"
прилагаю скрин чтобы было понятней.

Вот такая же фигня..дата и номер листа нормально вставляются. а вот с нумерацией бардак. я скрин прикладывал, думаю по нему понятно будет из-за чего.
nilem
Сообщения: 112
Зарегистрирован: 14 ноя 2008, 01:59
Откуда: Уфа

Так попробуйте:

Код: Выделить всё

Sub Макрос1 ()
Application.ScreenUpdating = False
    Sheets(Sheets.Count).Copy after:=Sheets(Sheets.Count)
    With ActiveSheet
        .Name = Val(Sheets(Sheets.Count - 1).Name) + 1
        .[A1].Value = "10У-" & .Name
        .[A2].Value = Date
    End With
Application.ScreenUpdating = True
End Sub
Аватара пользователя
Busine2009
Сообщения: 322
Зарегистрирован: 18 июл 2009, 15:34
Контактная информация:

dissonance
окончательный вариант:

Код: Выделить всё

Sub Макрос1()
Application.ScreenUpdating = False
    Sheets(Sheets.Count).Copy after:=Sheets(Sheets.Count)
    With ActiveSheet
        .Name = Val(Sheets(Sheets.Count - 1).Name) + 1
        .[A1].Value = "10У-" & .Name
        .[A2].Value = Date
        .PageSetup.FitToPagesWide = 1
        .PageSetup.FitToPagesTall = 1
    End With
Application.ScreenUpdating = True
End Sub
dissonance
Сообщения: 9
Зарегистрирован: 13 май 2010, 20:58

Busine2009 писал(а):dissonance
окончательный вариант:

Код: Выделить всё

Sub Макрос1()
Application.ScreenUpdating = False
    Sheets(Sheets.Count).Copy after:=Sheets(Sheets.Count)
    With ActiveSheet
        .Name = Val(Sheets(Sheets.Count - 1).Name) + 1
        .[A1].Value = "10У-" & .Name
        .[A2].Value = Date
        .PageSetup.FitToPagesWide = 1
        .PageSetup.FitToPagesTall = 1
    End With
Application.ScreenUpdating = True
End Sub
теперь выдает ошибку что нельзя присвоить листу такое же имя и создает в начале книги лист с именем "995(2)" , "995(3)"....(995 - первый лист в книге. нумерация начинается с него)
dissonance
Сообщения: 9
Зарегистрирован: 13 май 2010, 20:58

извините что отвечаю поздно. попробовал на новом Экселевском файле - все работает! огромное человеческое спасибо всем кто писал этот макрос. :D :D
Ответить