查找工作表的最新副本,例如工作表(N)

时间:2018-08-19 16:33:57

标签: excel vba worksheet

我有一个包含多个工作表的工作簿。

工作表以日期格式dd dddd mmm命名。例如8月15日星期三。当天可能会有很多工作表命名,但末尾有一个简单的(N)。 8月15日星期三(3)。这些已在早期阶段由worksheet.count复制。

我有一个Range(“ F3”),用于查找我要查找的工作表。但是我似乎无法正确地弄清楚如何找到其命名系列中的最后一张纸。例如8月12日星期三(3)。

以下函数及其相关子作品...但是只能找到命名系列中的第一个,例如8月12日,星期三。我需要修改它以找到系列中的最后一个,例如8月12日,星期三(3)。该工作簿包含许多不同日期的数据。

非常感谢您的帮助。

Function SheetExist(strSheetName As String) As Boolean
Dim i As Integer

For i = 1 To Worksheets.Count
    If Worksheets(i).Name = strSheetName Then
        SheetExist = True
        Exit Function
    End If
Next i
End Function


Sub FindlastestUpdate()

Application.DisplayAlerts = False
Application.ScreenUpdating = False

Dim Dfind As String 
Dfind =  Workbooks("Inbound.Control.xlsm").Worksheets("ControlPanel").Range("F3")
Dfind = Format(Dfind, "ddd dd mmm")

If SheetExist(Dfind) Then
Workbooks("Inbound.Control.xlsm").Worksheets(Dfind).Select



Debug.Print "The Sheet Exists"

Else 'What Happends if the sheet dosnt exist

Debug.Print "The Sheet Does NOT Exists"


End If

结束子

1 个答案:

答案 0 :(得分:2)

这是一个循环和使用->whereRaw("NOT ( trades.tradedate BETWEEN (CONCAT(DATE(trades.tradedate), ' ', exchanges.start_time)) AND (CASE WHEN exchanges.close_time > exchanges.start_time THEN (CONCAT(DATE(DATE_ADD(trades.tradedate, INTERVAL 1 DAY)), ' ', exchanges.close_time)) ELSE (CONCAT(DATE(trades.tradedate), ' ', exchanges.close_time)) ) )"); 外观的示例。根据需要更改工作簿引用。在这里,使用Split在每个工作表名称中查找F3值。如果存在,则代码将查看该名称是否存在Instr。如果这样做,它将在此和"("上进行拆分,以提取工作表副本中存在的数字。这可以从一些错误处理中受益。将提取的数字与")"变量进行比较。如果更大,则将finalNumber设置为提取的数字,依此类推。如果未找到finalNumber,则假定所需的最终工作表是找到的工作表,其中没有"(",但与"("值匹配。

F3