Страница 1 из 1

Помогите написать макрос

Добавлено: 17 дек 2007, 11:58
Yuriy_83
Помогите написать макрос: чтобы при его запуске происходило создание нового листа, название которого соответствовало бы названию определенной ячейки

Re: Помогите написать макрос

Добавлено: 17 дек 2007, 12:41
Pavel55
Наверное, как-то так

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

Sub AddSheet()
Dim NewSht As Worksheet
Dim iShtName As String

    iShtName = Sheets("Лист1").Range("A2") 'в этой ячейке должно быть название листа!
    If iShtName = "" Then
        MsgBox "Не указано имя листа!", vbExclamation, "Ошибка"
        Exit Sub
    End If
    On Error Resume Next
    Set NewSht = Sheets(iShtName)
    If Err = 0 Then
        MsgBox "Лист с таким назаванием уже существует!", vbExclamation, "Ошибка"
        Exit Sub
    End If
    On Error GoTo 0
    Set NewSht = Worksheets.Add
    NewSht.Name = iShtName
End Sub

Re: Помогите написать макрос

Добавлено: 17 дек 2007, 12:50
Yuriy_83
Спасибо большое!!

Один маленький вопрос:
для чего прописывается команды:
On Error Resume Next и
If Err <> 0 Then

Re: Помогите написать макрос

Добавлено: 17 дек 2007, 12:56
Pavel55
Я там обновил макрос (смотрите выше). Добавил некоторые проверки на ошибки. Протестируейте эту новую версию )

On Error Resume Next - Если возникла ошибка, то пропустить её и идти дальше по коду

If Err <> 0 Then - если возникла какая-нибудь (любая) ошибка, то ...

Re: Помогите написать макрос

Добавлено: 17 дек 2007, 13:38
Yuriy_83
Все работает, спасибо еще раз.
Сегодня первый раз попробовал написать макрос.
Получилось, но не совсем так, как хотелось.
Спасибо еще раз

Re: Помогите написать макрос

Добавлено: 17 дек 2007, 14:18
Pavel55
Поверьте, в написании макроса нет ничего сложного) Включаете запись макроса, проделываете манипуляции на листе, выключаете запись макроса и анализируете код. Ну и по возможности удаляете слово Select в коде)

Как например из такого кода, записанного макросом

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

    Range("B3").Select
    With Selection.Interior 
        .ColorIndex = 6 'цвет фона жёлтый
        .Pattern = xlSolid
    End With
    Range("E3").Select
    ActiveCell.FormulaR1C1 = "5" 'цифра 5 
    Range("F5").Select
    ActiveCell.FormulaR1C1 = "=SUM(R[-4]C[-5]:R[-4]C[-4]) '=СУММ(A1:B1)

делаете такой

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

Range("B3").Interior.ColorIndex = 6
Range("E3") = "5"
Range("F5").FormulaLocal = "=СУММ(" & "A1:B1)"
Как видите мы намного сократили код, убрав ненужные Select.
Вот и всё) а если где-то остановились и не знаете, как сделать дальше, обращайтесь к нам - на форум) Тут много умных ребят и все будут рады вам помочь )