Оптимизация кода - VBA (48931)
Формулировка задачи:
Есть код для копирования листа в созданную книгу, листы копируются с системной датой. Можно ли как то уменьшить код?
Решение задачи: «Оптимизация кода»
textual
Листинг программы
Sub копиялиста() Dim NameBookKop$, NameList$, newName$ Dim Sh As Worksheet, ActBook As Workbook Set ActBook = ActiveWorkbook NameList = "Дневная сводка" ' Имя листа для копии newName = NameList & Format(Date, " dd.mm.yyyy") ' новое наименование листа NameBookKop = "Копия листов тест.xlsm" ' Имя файла в который будет копироваться If MsgBox("Сохранить дневную сводку в архив?", vbOKCancel, "Внимание!") <> vbOK Then Exit Sub Application.ScreenUpdating = False On Error Resume Next Workbooks(NameBookKop).Close ' если файл не открыт то идем дальше, если открыт то закрываем With Workbooks.Open(Filename:=ActBook.Path & "\" & NameBookKop) 'открываем файл для копирования Set Sh = .Sheets(newName) On Error GoTo 0 If Not Sh Is Nothing Then If MsgBox("Лист уже сохранен! Удалить его? После удаления, данные вернуть не возможно!!!", _ vbOKCancel + vbExclamation, "Внимание!") = vbOK Then Application.DisplayAlerts = False ' выключаем все предупреждения Sh.Delete Application.DisplayAlerts = True 'обратно включаем предупреждения. .Close True With ActBook.Sheets("Главная").CommandButton1 .Caption = "Лист " & newName & " был удален! " 'пишем в кнопке .BackColor = RGB(255, 0, 0) 'расскрашиваем кнопку красным MsgBox "Лист " & newName & " был удален! Сделайте копию листа!", vbInformation, "Внимание!" End With End If Else ActBook.Sheets(NameList).Copy After:=.Sheets(.Sheets.Count) 'копия листа .Sheets(.Sheets.Count).Name = newName .Close True MsgBox "Данные успешно сохранены!", vbInformation, "Внимание!" With Sheets("Главная").CommandButton1 .Caption = "Лист сохранен!" 'пишем в кнопке .BackColor = RGB(0, 255, 0) 'расскрашиваем кнопку зеленым End With End If End With Application.ScreenUpdating = True End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д