Я использую функцию FORMAT Excel 2103 VBA, но я не получаю ожидаемых результатов.

Моя строка кода:

strMonthNo = Format(Month(DateAdd("m", -1, Date)), "mm")

Где Date 29/11/2016, я ожидаю, что strMonthNo = 10 , но это не так. Это 01!

Без FORMAT значение будет правильным.

Как я могу решить это?

2 ответа2

2

Выход Month - это число, а не дата.

Format(x,"mm") предполагает, что x будет датой, поэтому он обрабатывает ее 10 января 1900 года, поэтому результат равен 1 .

Просто используйте
Format(Month(DateAdd("m", -1, Date)), "00")

1

Вы делаете одно и то же дважды.

DateAdd дает вам дату, с которой вы хотите работать - Дата один месяц назад сегодня. Затем функция Month извлекает месяц с этой даты - в настоящее время 10.

Затем функция FORMAT берет этот месяц - 10 - и интерпретирует его как полную дату, то есть 10 января 1900 года. Это то, что вы форматируете, чтобы показать только месяц.

Вам нужно удалить либо MONTH либо FORMAT . Любой из них должен работать:

strMonthNo = Format(DateAdd("m", -1, Date))

strMonthNo = Month(DateAdd("m", -1, Date))

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .