Проверьте, является ли имя рабочих таблиц в рабочей книге названием месяцев - PullRequest
2 голосов
/ 30 мая 2019

Мне нужна помощь с кодом ниже.Я нашел код в сети @ StackOverflow. Я добавил несколько строк, но код не работает, и я получаю сообщение об ошибке.

Я пытаюсь выполнить цикл по каждому листу в книге A.имя рабочего листа равно названию месяца.Если это так, вставьте столбец в столбец А и напишите название месяца в ячейках столбца А.В столбце B: H уже есть данные, и у каждого существующего рабочего листа месяца есть динамические строки.Таким образом, после того, как столбец был вставлен и имя листов помещено в ячейки (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 Ответ

2 голосов
/ 30 мая 2019

Эта функция возвращает 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. Если это не работает в вашем регионе, просто измените, что вам, вероятно, просто нужно изменить строку, чтобы представить «длинную дату» вашего региона.

...