Страницы: 1
RSS
Склонение месяца на украинском языке (макросом)
 
Добрый вечер.
Проблема со склонением месяца на украинском языке в макросе.
В ячейке А1 вводится дата, а в В1 пример работы строки макроса
Format(iDate, "[$-FC22] DD MMMM YYYY") & " року"
Что нужно исправить в макросе, чтоб месяц склонялся?
Выдает:  05 жовтень 2018 року
А нужно:  05 жовтня 2018 року
 
сори,  формулу написал а не макрос
Изменено: БМВ - 19.10.2018 23:34:50
По вопросам из тем форума, личку не читаю.
 
При этом в русской версии тот же макрос выдает в ячейке В1
05 октября 2018 року
т.е. месяц склоняется
 
Хм. странно "[$-uk-UA-x-genlower]ДД ММММ ГГГГ" также ведет себя, хотя формульный вариант или просто формат работает.
 Range("B1") = Application.WorksheetFunction.Text(iDate, "[$-uk-UA-x-genlower]DD MMMM YYYY") & " року"
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
Хм. странно
по ходу в vba поддержку украинского не завезли)
Код
 Range("B1") = iDate
 Range("B1").NumberFormat = "[$-FC22]d mmmm yyyy"" року"";@"

так работает у меня)
 
Боюсь, что не понял итога ночной дискусии (может быть, я один). У меня

Код
Debug.Print Application.WorksheetFunction.Text(Date, "[$-FC22]DD MMMM YYYY")

выдает требуемый результат.
Изменено: sokol92 - 20.10.2018 15:53:40
Владимир
 
sokol92, Владимир, приветствую.  Диспут по поводу  неработоспособности Format(iDate, "[$-FC22] DD MMMM YYYY") & " року" в отличии от функции листа. Я в №4 text предложил, может не так очевидно.
По вопросам из тем форума, личку не читаю.
 
Здравствуйте, Михаил! Да, я, скорее, написал для будущих внимательных читателей темы.
 Кстати, функция VBA Format, насколько я понимаю, действует следующим  образом в части дат (для кодовой страницы по умолчанию windows-1251):
  • игнорирует  все, указанное в квадратных скобках (поэтому пример из #1 будет  выдавать название месяца исходя из региональных настроек)
  • интерпретирует mmmm как название месяца в родительном падеже, если в параметре формата этой конструкции предшествуют d или dd или с. В иных случаях месяц выдается в именительном падеже, в частности, в формате полной даты "dddddd".
Владимир
 
Вариант формата - [$-FC22]ДД ММММ ГГГГ" року";@
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
Хоть на зулусском
Код
Sub TextDate()
Dim dDate As Date
Dim sMonth As String
  dDate = Range("A1").Value
  
  Select Case Month(dDate)
  Case 1: sMonth = "січня "
  Case 2: sMonth = "лютого "
  ' .....
  Case 12:: sMonth = "грудня "
  End Select
  
   Range("B1").Value = Format(Day(dDate), "00 ") & sMonth & Year(dDate) & " року"
End Sub
 
Большое спасибо всем, кто откликнулся!
Проблема решена с использованием Функции Text.
Страницы: 1
Наверх