Member 13924946 Ответов: 1

Как сделать кнопку для создания нового листа с именем как у предыдущего листа дата ставится плюс один день


Я делаю новый проект для бронирования клиники в excel и в этом проекте. Мне нужно нажать кнопку, чтобы создать новый лист с новой датой, которая на один день больше, чем дата предыдущего. Я нашел код в интернете, который создает новый лист с моим шаблоном, но он создает лист с сегодняшней датой, но мне нужно создать лист с одним днем больше, чем последний созданный лист или активный лист. Может ли кто-нибудь помочь?



код, который я нашел, таков: :

Что я уже пробовал:

Sub Insert_Sheet_Template()
    Dim sh As Worksheet
    Dim shName As String

    'name of the sheet template
    shName = "template.xltm"

    'Insert sheet template
    With ThisWorkbook
        Set sh = Sheets.Add(Type:=Application.TemplatesPath & shName, _
                            after:=.Sheets(.Sheets.Count))
    End With

    'Give the sheet a name, today's date in this example
    On Error Resume Next
    sh.Name = Format(Date, "yyyy-mmm-dd")
    If Err.Number > 0 Then
        MsgBox "Change the name of Sheet : " & sh.Name & " manually"
        Err.Clear
    End If
    On Error GoTo 0
End Sub

1 Ответов

Рейтинг:
2

CHill60

Попробуйте эту функцию

Private Function FindNextSheetDate() As String
'Steps through the sheets in ThisWorkbook and determines which (if any) are a date
'determines the latest of those dates and adds 1 day 
'returns that date as a string in yyyy-mmm-dd format
'If no sheets are found, returns today's date
'Error handling is assumed to be handled by the calling function

    Dim dt As Date
    Dim maxdt As Date
    maxdt = CDate("1900-Jan-01")
    
    Dim sht As Variant
    For Each sht In ThisWorkbook.Sheets
        If IsDate(sht.Name) Then
            dt = CDate(sht.Name)
            If dt > maxdt Then
                maxdt = dt
            End If
        End If
    Next

    If maxdt = CDate("1900-Jan-01") Then
        'Set maxdt to yesterday as there is a DateAdd of one day in the return value
        maxdt = DateAdd("d", -1, Date)
    End If

    FindNextSheetDate = Format$(DateAdd("d", 1, maxdt), "yyyy-mmm-dd")
    
End Function
Используется как
sh.Name = FindNextSheetDate()