|
Вариант I.
Для получения названия месяца можно воспользоваться функцией 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 |
Вариант II.
Для получения название месяца также можно воспользоваться функциями
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 |
Вариант III.
Для решения поставленной задачи можно воспользоваться функциями
Array и Month .
Первая функция используется для того, чтобы возвратить массив всех месяцев.
Нужный месяц(элемент массива) выбирается путём указания необходимого индекса,
который представляет собой номер месяца (число от 1 до 12).
| MonthNameRus = Array("", "Январь", "Февраль", "Март", _
"Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", _
"Октябрь", "Ноябрь", "Декабрь")(Month(iDate)) |
| 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 |
| 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 |
Вариант IV.
Также можно воспользоваться функцией 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 |
Вариант V.
Кроме того, можно воспользоваться одним из четырёх стандартных списков
MS Excel, однако, есть опасение, что ранние версии, например, XL97 будут
возвращать название месяца в английском варианте (вне зависимости от того
руссифицирован Ваш офис или нет)
|
MonthNameLocal = Application.GetCustomListContents(4)(Month(Now)) |
Обратите внимание на метод GetCustomListContents об'екта Application,
который возвращает массив всех месяцев, что позволяет обойтись без цикла,
например, при заполнении ComboBox или ListBox
|
ComboBox1.List = Application.GetCustomListContents(3) |
|
ListBox1.List = Application.GetCustomListContents(4) |
Вариант VI.
Для получения названия месяца в английском варианте (т.е. вне зависимости
от того руссифицирован Ваш офис или нет) можно использовать стандартную
функцию рабочего листа =ТЕКСТ()
| MonthNameEng = Application.Text(Now, "MMMM") |
| MonthNameEng = WorksheetFunction.Text(Date, "MMMM") |
| MonthNameEng = [TEXT(TODAY(),"MMMM")] |
и т.д.
Вариант VII.
Кроме того, можно воспользоваться 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 |
Примеры можно скачать
здесь
Автор :
Климов Павел Юрьевич
|
|
© 2004-2016 Климов П.Ю. Все права защищены. |
WebDesign & Error's
Klimoff
|