检查工作簿中的工作表名称是否为月份名称

时间:2019-05-30 04:28:45

标签: excel-vba

我需要以下代码的帮助。我在网上找到了代码@ StackOverflow,我添加了一些行,但是代码不起作用,并且出现错误消息。

我想做的是遍历工作簿A中的每个工作表。然后检查工作表的名称是否等于“月份名称”。如果是的话,则在A列中插入一列,并在A列单元格中写入工作表“月名称”。 B:H列中已经有数据,并且每个现有的月份工作表都有动态行。因此,在插入列并将工作表名称放置在Cells(r,1)之后,然后将“月工作表”数据复制到工作簿“合并数据”。 TIA

Dim ws As Worksheet
    Dim i As Long

    For i = 1 To 12
        If IsError(MonthName(i, False)) = True Then
        Else
        Set ws = wbYTD.Sheets(MonthName(i, False))
        End If

        With ws
            .Columns(1).Insert
            .Range("A3").Value = (MonthName(i, False))
        End With
    Next i

1 个答案:

答案 0 :(得分:2)

TRUE包含有效的月份名称时,此函数返回st

Function isMonthName(st As String) As Boolean
  Dim test
  On Error Resume Next
  test = DateValue(st & " 1, 1999")
  isMonthName = IIf(Err, False, True)
End Function

示例:

  • isMonthName("july")返回TRUE
  • isMonthName("julyy")返回FALSE

我不确定它是否在所有地区都适用,但对我来说测试正常。

该函数只是将字符串插入带有日期和年份(“ ____ 1, 1999”)的字符串中,并使用DateValue函数检查它是否是有效日期。如果在您所在的地区不起作用,请更改一下,您可能只需要更改字符串即可代表您所在地区的“长日期”。