Как узнать даты определенного месяца - PullRequest
0 голосов
/ 03 декабря 2011

Я работаю в макросе Excel.В том, что мне нужно сгенерировать все даты, принадлежащие определенному месяцу.Кто-нибудь может сказать, как этого добиться?

ОБНОВЛЕНИЕ: Я хочу получить его в виде массива чисел.Я пытался использовать функцию, связанную с датой, которые находились под пространством имен "Система".Но он показывает ошибку как «объект или метод не найден».Итак, я использую идею Иссана (см. Ниже).Но я получаю сообщение об ошибке, так как «Объект не поддерживает это свойство или метод».

РЕДАКТИРОВАТЬ: Ошибка «Объект не поддерживает это свойство или метод» исчезла после того, как я объявил переменную как Date.Я думаю, что доступные объекты в VBA зависят от объявленных переменных.Спасибо всем вам.

Ответы [ 2 ]

2 голосов
/ 03 декабря 2011

(Предполагается, что вы имели в виду VBA, поскольку говорите, что «работаете в макросе Excel»)

Вот как вы можете сгенерировать массив дат для каждого дня в конкретном месяце (недостаточно информации, чтобы предложитькакой формат вы хотите, поэтому я предполагаю массив дат).

Sub GenerateDates()

Dim Days() As Date
Dim DaysInMonth As Long, i As Long
Dim Year As Long, Month As Long

' Example: Feb, 2006 (leap year)
Year = 1996
Month = 2

DaysInMonth = DateSerial(Year, Month + 1, 1) - _
              DateSerial(Year, Month, 1)

ReDim Days(1 To DaysInMonth)
For i = 1 To DaysInMonth
    Days(i) = DateSerial(Year, Month, i)
Next

'Do as you wish with the array of 29 days

End Sub

Как это работает: Вы можете получить количество дней в месяце, используя приведенную выше математику dateserial.Это гарантирует, что вы получите правильное количество дней, даже учитывая високосные годы.Тогда вы просто переделаете свой массив дней и заполните массив!

1 голос
/ 03 декабря 2011

Если вы хотите использовать VBA, то ответ Иссуна - лучший способ справиться с этим.

Тем не менее, это, вероятно, часть более серьезной проблемы, и из вашего вопроса мы не видим, чего вы хотите достичь.

Не забывайте, что вы также можете использовать электронную таблицу Excel для создания целого приложения.

Например, вы можете использовать формулу =EOMONTH(NOW(),0), чтобы получить последний день текущего месяца. Или измените его так, как вы хотите, на любую другую дату.
Примечание: не забудьте проверить Analysis ToolPak Add-in, чтобы формула EOMONTH существовала.

[ПРАВИТЬ] Вы можете найти больше информации о EOMONTH на статье этого блога

...