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