Строка VBA как целое число всегда " ноль"


Я создаю макрос, который будет распознавать месяцы и помещать первые 3 буквы и 2 последние цифры года в название листа. Вот что я создал до сих пор:

Например Cells(9,1) - это первый день месяца (01/01/2016)

Dim mName(13) As Integer
Dim ValDate As String
Dim years As String
Dim mcount As String

mName(1) = January
mName(2) = Febuary

...

mName(13) = December

years = Right(Year(Cells(9, 1)), 2)   '16
ValDate = mName(Month(Cells(9, 1)))   'macro says its 0, but it should be January)

mcount = Left(ValDate, 3) 

Sheets(Sheets.Count).Name = ValDate & " " & years

Результат макроса равен "0 16" Моя цель - "16 января".

Макрос работает нормально (без ошибок), но его всегда показывает "0", когда есть целое число mName в строке ValDate. Функция Month прекрасно работает без mName.

2 2

2 ответа:

Заключите имена в двойные кавычки.

Dim mName(1 To 12) As String

mName(1) = "January" '<~~~ double quotes
...
mName(12) = "December" '<~~~ 12, not 13. There are only 12 months in a year

VBA рассматривает January как вариант. Вы не инициализировали January, поэтому его значение равно 0