我需要以下代码的帮助。我在网上找到了代码@ 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
答案 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
函数检查它是否是有效日期。如果在您所在的地区不起作用,请更改一下,您可能只需要更改字符串即可代表您所在地区的“长日期”。