Доброе время суток! Прошу помочь с решением задачки. В приложенном файле необходимо скопировать лист "Образец" n-ое количество раз с присвоением имён по порядку от a до b, где a = начальная дата, b = конечная дата.
Пример:
Исходные листы: "Содержание", "Источник", "Образец" (как в приложенном файле).
Вводим значение переменных: a = 27 декабря 2015, b = 4 января 2016 (макрос привязанный к отдельной кнопке на странице "Содержание". Переменные заносятся в ячейки около кнопки вручную или всплывающим списком или в окошке, любой способ на выбор доброго помощника).
Получаем листы: "Содержание", "Источник", "Образец", "27 декабря 2015", "28 декабря 2015", "29 декабря 2015", "30 декабря 2015", "31 декабря 2015", "1 января 2016", "2 января 2016", "3 января 2016", "4 января 2016" (формат имени добавляемых листов не обязателен как в примере, пойдёт любой, но чтобы было понятно какое число, месяц, год).
Желательно учитывать количество дней в месяце согласно календарю. Временной промежуток может быть и пол года, переходя из одного в другой год.
Доброе время суток! Прошу помочь с решением задачки. В приложенном файле необходимо скопировать лист "Образец" n-ое количество раз с присвоением имён по порядку от a до b, где a = начальная дата, b = конечная дата.
Пример:
Исходные листы: "Содержание", "Источник", "Образец" (как в приложенном файле).
Вводим значение переменных: a = 27 декабря 2015, b = 4 января 2016 (макрос привязанный к отдельной кнопке на странице "Содержание". Переменные заносятся в ячейки около кнопки вручную или всплывающим списком или в окошке, любой способ на выбор доброго помощника).
Получаем листы: "Содержание", "Источник", "Образец", "27 декабря 2015", "28 декабря 2015", "29 декабря 2015", "30 декабря 2015", "31 декабря 2015", "1 января 2016", "2 января 2016", "3 января 2016", "4 января 2016" (формат имени добавляемых листов не обязателен как в примере, пойдёт любой, но чтобы было понятно какое число, месяц, год).
Желательно учитывать количество дней в месяце согласно календарю. Временной промежуток может быть и пол года, переходя из одного в другой год.Didrou
Макрос запускается из листа "Содержание", кнопкой, которая находится в D7. В ячейки D9, D10 нужно записать даты. Сам макрос находится в модуле "CreateSheets".
Макрос запускается из листа "Содержание", кнопкой, которая находится в D7. В ячейки D9, D10 нужно записать даты. Сам макрос находится в модуле "CreateSheets".Karataev
На листе Содержание в ячейке А5 - начальная дата, в А6 - конечная [vba]
Код
Sub CopyObraz() Dim iNameSheet As String Dim iCount As Long Application.ScreenUpdating = False Application.DisplayAlerts = False iNameSheet = Range("A5") iCount = Range("A5").Value Do If Not SheetExist(iNameSheet) Then Sheets("образец").copy After:=Sheets(Sheets.Count) Sheets(Sheets.Count).Name = iNameSheet End If iCount = iCount + 1 iNameSheet = CDate(iCount) Loop While iCount <> Range("A6").Value + 1 Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub 'функция проверки наличия листа в файле, лист есть - true Function SheetExist(iName As String) As Boolean On Error Resume Next With Worksheets(iName): End With SheetExist = (Err = 0) End Function
[/vba]
На листе Содержание в ячейке А5 - начальная дата, в А6 - конечная [vba]
Код
Sub CopyObraz() Dim iNameSheet As String Dim iCount As Long Application.ScreenUpdating = False Application.DisplayAlerts = False iNameSheet = Range("A5") iCount = Range("A5").Value Do If Not SheetExist(iNameSheet) Then Sheets("образец").copy After:=Sheets(Sheets.Count) Sheets(Sheets.Count).Name = iNameSheet End If iCount = iCount + 1 iNameSheet = CDate(iCount) Loop While iCount <> Range("A6").Value + 1 Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub 'функция проверки наличия листа в файле, лист есть - true Function SheetExist(iName As String) As Boolean On Error Resume Next With Worksheets(iName): End With SheetExist = (Err = 0) End Function
Я макрос располагал в модуле листа "Содержание" Лист у вас называется "образец", а в коде вы написали почему-то с большой буквы. Если код будет в стандартном модуле, то добавьте в код явно [vba]
Я макрос располагал в модуле листа "Содержание" Лист у вас называется "образец", а в коде вы написали почему-то с большой буквы. Если код будет в стандартном модуле, то добавьте в код явно [vba]