1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 | Вариант Для получения названия месяца можно воспользоваться функцией Format и форматом даты MMMM MonthNameLocal = Format(Now, "MMMM") Пример получения имени месяца в виде пользовательской функции, а также пример вызова этой функции. Private Sub GetMonthName() MsgBox MonthNameLocal(# 5 / 22 / 2005 #), , "Месяц:" End Sub Private Function MonthNameLocal$(iDate As Date) MonthNameLocal$ = Format(iDate, "MMMM") End Function Вариант Для получения название месяца также можно воспользоваться функциями Choose и Month. Первая функция используется для того, чтобы возвратить значение из списка, используя его индекс(номер), а номер определяется с помощью второй функции, которая возвращает номер месяца (число от 1 до 12 ) для указанной даты. MonthNameRus = Choose(Month(Now), _ "Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", _ "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь") Пример получения имени месяца в виде пользовательской функции, а также пример вызова этой функции. Private Sub GetMonthName() MsgBox MonthNameRus(# 1 / 22 / 2005 #), , "Месяц:" End Sub Private Function MonthNameRus$(iDate As Date) MonthNameRus$ = Choose(Month(iDate), _ "Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", _ "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь") End Function Вариант Для решения поставленной задачи можно воспользоваться функциями Array и Month. Первая функция используется для того, чтобы возвратить массив всех месяцев. Нужный месяц (элемент массива) выбирается путём указания необходимого индекса, который представляет собой номер месяца (число от 1 до 12 ). MonthNameRus = Array ("", "Январь", "Февраль", "Март", _ "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", _ "Октябрь", "Ноябрь", "Декабрь")(Month(iDate)) code: #vba MonthNameRus = Array ("Январь", "Февраль", "Март", _ "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", _ "Октябрь", "Ноябрь", "Декабрь")(Month(iDate) - 1 ) Несколько однотипных примеров получения имени месяца, оформленных в виде функций. Private Sub GetMonthName() MsgBox MonthNameRus(# 7 / 22 / 2005 #), , "Месяц:" End Sub Private Function MonthNameRus$(iDate As Date) MonthNameRus$ = Array ("", "Январь", "Февраль", "Март", _ "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", _ "Октябрь", "Ноябрь", "Декабрь")(Month(iDate)) End Function Private Sub GetMonthName() MsgBox MonthNameRus(# 7 / 22 / 2005 #), , "Месяц:" End Sub Private Function MonthNameRus$(iDate As Date) MonthNameRus$ = Array ("Январь", "Февраль", "Март", _ "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", _ "Октябрь", "Ноябрь", "Декабрь")(Month(iDate) - 1 ) End Function code: #vba Option Base 1 Private Sub GetMonthName() MsgBox MonthNameRus(# 7 / 22 / 2005 #), , "Месяц:" End Sub Private Function MonthNameRus$(iDate As Date) MonthNameRus$ = Array ("Январь", "Февраль", "Март", _ "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", _ "Октябрь", "Ноябрь", "Декабрь")(Month(iDate)) End Function Вариант Также можно воспользоваться функцией MonthName, но необходимо учитывать тот факт, что эта функция появилась только в Microsoft Excel 2000 MonthNameLocal = MonthName(Month(Now)) Пример получения имени месяца с помощью функции MonthName (XL 2000 и старше) Private Sub GetMonthName() MsgBox MonthNameLocal(# 8 / 15 / 2005 #), , "Месяц:" End Sub Private Function MonthNameLocal$(iDate As Date) MonthNameLocal$ = MonthName(Month(iDate)) ' Только для Microsoft Excel 2000 и старше End Function Если Вам необходимо просто получить перечень всех месяцев, т.е. без привязки к конкретной дате, то: For iMonth = 1 To 12 MonthNameLocal = MonthName(iMonth) MsgBox MonthNameLocal 'MonthName(iMonth) Next Вариант Кроме того, можно воспользоваться одним из четырёх стандартных списков MS Excel, однако, есть опасение, что ранние версии, например, XL97 будут возвращать название месяца в английском варианте (вне зависимости от того руссифицирован Ваш офис или нет) MonthNameLocal = Application . GetCustomListContents( 4 )(Month(Now)) Обратите внимание на метод GetCustomListContents объекта Application, который возвращает массив всех месяцев, что позволяет обойтись без цикла, например, при заполнении ComboBox или ListBox ComboBox1 . List = Application . GetCustomListContents( 3 ) ListBox1 . List = Application . GetCustomListContents( 4 ) Вариант Для получения названия месяца в английском варианте (т.е. вне зависимости от того руссифицирован Ваш офис или нет) можно использовать стандартную функцию рабочего листа =ТЕКСТ() MonthNameEng = Application . Text(Now, "MMMM") MonthNameEng = WorksheetFunction . Text(Date, "MMMM") MonthNameEng = [TEXT(TODAY(),"MMMM")] и т.д. Вариант Кроме того, можно воспользоваться WinAPI, т.е. Private Declare Sub VarMonthName Lib "oleaut32 . dll" ( _ ByVal iMonth As Long, _ ByVal fAbbrev As Long, _ ByVal dwFlags As Long, _ ByRef pbstrOut As String ) Private Function MonthNameLocal$(iDate As Date) VarMonthName Month(iDate), 0 &, 0 &, MonthNameLocal ' 0 & - Январь 'VarMonthName Month(iDate), 1&, 0&, MonthNameLocal ' 1 & - янв MonthNameLocal = StrConv(MonthNameLocal, vbFromUnicode) End Function Private Sub GetMonthName() MsgBox MonthNameLocal(# 1 / 20 / 2005 #), , "Месяц:" End Sub |