使用NEXT日期打开一个新工作表

问题描述 投票:0回答:2

所以我需要一个宏代码来命名工作表,并在其上设置下一个日期,如前一个工作表被称为Tue 27,那么下一个工作表(新工作表)应该是星期三28,

我当前的代码只将其命名为TODAYS日期,这就是我正在使用的

Dim szTodayDate As String
szTodayDate = Format(Date, "ddd") & Format(Date, " dd")
On Error GoTo MakeSheet
Sheets(szTodayDate).Activate
Exit Sub
MakeSheet:
Dim Srt As Worksheet
Set Srt = ActiveSheet
Sheets.Add
ActiveSheet.Name = szTodayDate

是否有可能这样做,如果是这样,任何人都可以告诉我如何,谢谢

附加说明:所以宏每次运行时都会创建一个新工作表,然后用今天的日期命名,我需要用相对于前一个工作表的NEXT日期命名。因此,如果最后一张表(在宏运行之前)被称为“Sun 02”,那么宏应该创建一张表并将其命名为“Mon 03”,假设现在月份没关系,我将不会运行此宏月份结束,所以在工作簿2月,“Wed 28”将是我最后一次运行这个宏。

原因解释:所以我需要每天为工作创建一个新的工作表,但有时我最终必须在一天之后制作工作表,所以让我们说太阳02我按时制作工作表,所以现在我有工作表sun 02,但是我在星期一错过了,然后在星期二我制作了这张纸,它最终制作了Sheet Tue 04,所以现在我错过了Mon 03。

可能的替代:如果我可以以某种方式设置一个IF函数,可以检查是否存在具有昨天名称的工作表(可能会回到最多2天),如果没有创建它,那将是有效的。但不知道如何编写所谓的IF功能(它还需要创建它并将其命名为今天,如果今天是01)。

再次感谢你

excel vba excel-vba
2个回答
0
投票

以下代码的一个重要注意事项:在默认状态下,它要求Sheet Names包含Month,因此格式为"ddd dd mmm"(“Wed 28 Feb”)而不是"ddd dd"(“Wed 28”)。例如,如果月份存储在FileName中,那么您将需要修改代码。

我们需要一个变量来存储找到的最新日期,以及一个要在qa​​zxswpoi循环中使用的Worksheet对象。我们将检查每个工作表的For Each并检查它是否为Name。如果是,那么我们将看到它是否晚于我们当前存储的日期。这将在年底失败,除非您开始在工作表名称(或文件名)中包含年份。 (因为IsDate来自1 Jan

31 Dec

0
投票

尝试使用下面的,您可以使用计数器而不是1。

Dim dMaxDate AS Date, wsForLoop AS Worksheet, sTestString AS String

dMaxDate = DateSerial(1900,1,0) 'Default to 0

For Each wsForLoop In ThisWorkbook.Worksheets 'Loop through every worksheet
    sTestString = wsForLoop.Name 'Get the name of the sheet
    If InStr(sTestString, " ") > 0 Then sTestString = Mid(sTestString, 1+InStr(sTestString, " ")) 'Remove the Weekday

    'If you need to add the Month/Year from your filename, do that here

    If IsDate(sTestString) Then 'Only check Worksheets with Dates for Names
        If cDate(sTestString) > dMaxDate Then dMaxDate = cDate(sTestString) 'If this is a later date then store it
    End If
Next wsForLoop 'Return to start of loop

If dMaxDate < DateSerial(1900, 1, 1) Then dMaxDate = Now-1 'If we have no Worksheets with Dates for Names then default to yesterday

With ThisWorkbook.Worksheets.Add 'Add a new sheet
    'Change the Format if you are adding the Month and/or Year from Filename
    .Name = Format(dMaxDate+1, "ddd d mmm") 'And Name it the day after our stored date
End With
© www.soinside.com 2019 - 2024. All rights reserved.