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

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

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

Ответить
Yuriy_83
Сообщения: 3
Зарегистрирован: 17 дек 2007, 11:45

Помогите написать макрос: чтобы при его запуске происходило создание нового листа, название которого соответствовало бы названию определенной ячейки
Pavel55
Сообщения: 418
Зарегистрирован: 20 окт 2006, 11:40
Откуда: Moscow

Наверное, как-то так

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

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
Yuriy_83
Сообщения: 3
Зарегистрирован: 17 дек 2007, 11:45

Спасибо большое!!

Один маленький вопрос:
для чего прописывается команды:
On Error Resume Next и
If Err <> 0 Then
Pavel55
Сообщения: 418
Зарегистрирован: 20 окт 2006, 11:40
Откуда: Moscow

Я там обновил макрос (смотрите выше). Добавил некоторые проверки на ошибки. Протестируейте эту новую версию )

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

If Err <> 0 Then - если возникла какая-нибудь (любая) ошибка, то ...
Yuriy_83
Сообщения: 3
Зарегистрирован: 17 дек 2007, 11:45

Все работает, спасибо еще раз.
Сегодня первый раз попробовал написать макрос.
Получилось, но не совсем так, как хотелось.
Спасибо еще раз
Pavel55
Сообщения: 418
Зарегистрирован: 20 окт 2006, 11:40
Откуда: Moscow

Поверьте, в написании макроса нет ничего сложного) Включаете запись макроса, проделываете манипуляции на листе, выключаете запись макроса и анализируете код. Ну и по возможности удаляете слово 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.
Вот и всё) а если где-то остановились и не знаете, как сделать дальше, обращайтесь к нам - на форум) Тут много умных ребят и все будут рады вам помочь )
Ответить