Профессиональные приемы работы в Microsoft Excel

Пожалуйста, войдите или зарегистрируйтесь.


Расширенный поиск  

Новости:

К первому сообщению темы должен быть прикреплен файл примера в формате xls*.
Приложив пример, Вы избавите себя и других от вопросов типа "А какой критерий?", "А куда выводить результат?", "А сколько строк?" и все тех же просьб выложить файл. Рисовать за Вас Ваши же таблички с заданиями, а затем и решение к ним, никто желанием не горит. Да и, как показывает практика, в большинстве случаев без файла решения не найти.

Автор Тема: Автоматическое создание нового листа  (Прочитано 201 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Tosha Shufer

  • Новичок
  • *
  • Уважение: +0/-0
  • Оффлайн Оффлайн
  • Сообщений: 5

Знатоки подскажите, как можно сделать, что бы автоматически создавался новый лист по графику (к примеру в 6 утра, или наступлении новой даты) и при этом данные из столбца C переносились в столбец А.
Подробнее : Есть таблица(прилагается), где столбцы T U V остаток на утро, W X Y Z AA AB поступление в течении дня, AC AD AE итог на вечер. Нужно, что бы с утра был новый лист (наименованием даты создания) копия предыдущего с остатками вчерашнего дня в столбцах T U V, а столцы W X Y Z AA AB  обнулены. Можно так сделать?

Заранее спасибо
« Последнее редактирование: 21.06.2018, 13:43:07 от Tosha Shufer »
Записан

boa

  • Глобальный модератор
  • Старожил
  • *****
  • Уважение: +32/-0
  • Оффлайн Оффлайн
  • Сообщений: 540
  • Доброта спасет мир...

приложите файл,плз
Записан
Ничто не обходится нам так дешево и не ценится так дорого, как вежливость...  Мигель Сервантес де Сааведра

Tosha Shufer

  • Новичок
  • *
  • Уважение: +0/-0
  • Оффлайн Оффлайн
  • Сообщений: 5

Приложил
Записан

boa

  • Глобальный модератор
  • Старожил
  • *****
  • Уважение: +32/-0
  • Оффлайн Оффлайн
  • Сообщений: 540
  • Доброта спасет мир...

в модуль книги добавьте событие на открытие книги
Private Sub Workbook_Open()
Dim sh As Worksheet
Dim D As String
D = Format(Date, "DD.MM")
    For Each sh In Worksheets
        If sh.Name = D Then Exit Sub
    Next
    MsgBox "Сейчас будет добавлен новый лист """ & D & """", vbInformation  '   вывод сообщения можно закомментировать
    Sheets(Format(Date - 1, "DD.MM")).Copy After:=Sheets(Format(Date - 1, "DD.MM"))
    Set sh = Sheets(Sheets(Format(Date - 1, "DD.MM")).Index + 1)
    With sh
        .Name = D
        .Range("T5:V18").Value = .Range("AC5:AE18").Value
        .Range("W5:AB18").Value = 0
    End With
End Sub
Записан
Ничто не обходится нам так дешево и не ценится так дорого, как вежливость...  Мигель Сервантес де Сааведра

Tosha Shufer

  • Новичок
  • *
  • Уважение: +0/-0
  • Оффлайн Оффлайн
  • Сообщений: 5

Спасибо большое :))
Записан

Tosha Shufer

  • Новичок
  • *
  • Уважение: +0/-0
  • Оффлайн Оффлайн
  • Сообщений: 5

Хотел еще спросить, если к примеру пару дней таблицу не открывали. То возникнет ошибка как я понял?
Как правильно скорректировать, так что бы, либо создавались все листы за пропущенные даты, или создавался текущий сегодняшний лист, с пропуском дней когда таблица не открывалась, то есть после 20.06 шел 22.06, но данные переходили с 20 на 22
Записан

boa

  • Глобальный модератор
  • Старожил
  • *****
  • Уважение: +32/-0
  • Оффлайн Оффлайн
  • Сообщений: 540
  • Доброта спасет мир...

Хотел еще спросить, если к примеру пару дней таблицу не открывали. То возникнет ошибка как я понял?

да
что бы ошибок не возникало и лист все равно создавался измените код
Private Sub Workbook_Open()
Dim sh As Worksheet
Dim D As String, D1$, i%
D = Format(Date, "DD.MM")
    For Each sh In Worksheets
        If sh.Name = D Then Exit Sub
    Next
    MsgBox "Сейчас будет добавлен новый лист """ & D & """", vbInformation  '   вывод сообщения можно закомментировать
    Do
        i = i + 1
        D1 = Format(Date - i, "DD.MM")
        For Each sh In Worksheets
            If sh.Name = D1 Then Exit Do
        Next
    Loop
    Sheets(D1).Copy After:=Sheets(D1)
    Set sh = Sheets(Sheets(D1).Index + 1)
    With sh
        .Name = D
        .Range("T5:V18").Value = .Range("AC5:AE18").Value
        .Range("W5:AB18").Value = 0
    End With
End Sub
Записан
Ничто не обходится нам так дешево и не ценится так дорого, как вежливость...  Мигель Сервантес де Сааведра

Tosha Shufer

  • Новичок
  • *
  • Уважение: +0/-0
  • Оффлайн Оффлайн
  • Сообщений: 5

Спасибо. ;)
Записан
 



Темы без ответов

30.09.2018 10:24 Расчет процентов за определенный период (месяц) с учетом изменений и платежей 390
03.03.2018 00:00 Подсчет отработанного времени, за исключением заранее определенных перерывов 1183
14.02.2018 10:11 Подготовить читабельную отчетность по платежам 1184
23.01.2018 13:46 Найти вероятность повторной покупки 1077
12.01.2018 23:56 Сделать отчет на Power BI (Dashboard) 1513
06.09.2017 10:43 Solver VBA не решает гиперболическое уравнение, но при этом решает гармоническое 1365
17.08.2017 12:15 Гиперссылка и фильтр одновременно макрос 1719
23.05.2017 11:20 Копирование данных из одной таблицы в умную таблицу по условию 3471
15.03.2017 15:45 автозамена картинок PowerPoint 1970
11.03.2017 13:43 Изменить нумерацию страниц 2099





Яндекс цитирования msexcel.ru Яндекс.Метрика

Страница сгенерирована за 0.108 секунд. Запросов: 111.