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

时间:2018-03-01 11:02:57

标签: excel vba excel-vba

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

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

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”将是我最后一次运行这个宏。

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

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

再次感谢您

2 个答案:

答案 0 :(得分:0)

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

SZTodayDate = Format(Date + 1, "ddd") & Format(Date + 1, " dd")

答案 1 :(得分:0)

以下代码的一个重要说明:在默认状态下,它要求工作表名称包含月份,因此格式为"ddd dd mmm"(“2月28日星期三”) { {1}}(“周三28”)。例如,如果月份存储在FileName中,则需要修改代码。

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

31 Dec