Я немного переписал ваш код для разделения проблем и просто использовал неявное преобразование Excel, чтобы получить Месяц (Сейчас) в виде строки.VBA просто преобразует значение в строку, но вы также можете использовать преобразование типов для преобразования чисел в строки с помощью CSTR ().
В целом, некоторые другие решения компактны, и вы должны их использовать, ноэто действительно указывает на то, что вам, возможно, нужно больше осознавать разделение интересов (по сути, хорошие привычки кода), преобразование типов и неявное / явное преобразование в VBA.Кроме того, вам может быть проще использовать Debug.Print при кодировании / отладке, а также использовать окна Immediate и Locals для понимания вашего кода.
Код
Private dict As Collection
Sub SetArray()
Set dict = New Collection
dict.Add "JANVIER", "1"
dict.Add "FÉVRIER", "2"
dict.Add "MARS", "3"
dict.Add "AVRIL", "4"
dict.Add "MAI", "5"
dict.Add "JUIN", "6"
dict.Add "JUILLET", "7"
dict.Add "AOUT", "8"
dict.Add "SEPTEMBRE", "9"
dict.Add "OCTOBRE", "10"
dict.Add "NOVEMBRE", "11"
dict.Add "DÉCEMBRE", "12"
End Sub
Тесты:
Sub Test()
SetArray
Dim Month1 As String
Debug.Print dict.Item("12") '1st check - OK
Month1 = Month(Now)
Debug.Print Month1 '2nd check - OK
Debug.Print dict.Item(Month1) 'final result - SUCCEED
Month1 = CStr(Month(Now))
Debug.Print dict.Item(Month1) 'final result - SUCCEED
End Sub