Мне нужна помощь с кодом ниже. Я нашел код в Интернете @ StackOverflow. Я добавил несколько строк, но код не работает, и я получаю сообщение об ошибке.
Что я пытаюсь сделать, так это прокрутить каждый рабочий лист в рабочей книге A. И проверить, равно ли имя рабочего листа имени месяца. Если это так, вставьте столбец в столбец A и напишите название месяца листов в ячейках столбца A. В столбце B:H уже есть данные, и каждый существующий рабочий лист месяца имеет динамические строки. Итак, после того, как столбец был вставлен, а имя листа помещено в ячейки (r, 1), скопируйте данные месячных листов в рабочую книгу «Консолидированные данные». ТИА
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
Эта функция возвращает 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
. Если это не работает в вашем регионе, просто измените это, вероятно, вам просто нужно изменить строку, чтобы представить «длинную дату» вашего региона.