В пользовательской форме в excel, используя vba, мне нужно найти конец месяца. Например, дата начала 01.01.2015, дата окончания будет автоматически 31.01.2015. Я пытаюсь использовать этот код:Конец месяца за месяц
Private Function dhLastDayInMonth(Optional dtmDate As Date = 0) As Date
' Return the last day in the specified month.
If dtmDate = 0 Then
' Did the caller pass in a date? If not, use
' the current date.
dtmDate = Date
End If
dhLastDayInMonth = DateSerial(Year(dtmDate), _
Month(dtmDate) + 1, 0)
End Function
но этот код возвращает только в конце февраля. Пример: дата начала: 01.01.2015 мой код возвращает 28.02.2015 или дата начала: 05.02.2015 мой код возвращает 28.02.2015
Seconde код строка для редактирования в текстовом поле, чтобы вставить дату окончания
Private Sub txtEDate_Change()
If txtEDate.Text = "" Then
MsgBox "You must enter a Date! "
Exit Sub
End If
If txtEDate.TextLength = 2 Or txtEDate.TextLength = 5 Then
txtEDate.Text = txtEDate.Text + "."
End If
If txtEDate.TextLength = 2 Or txtEDate.TextLength = 5 Then
txtEDate.Text = txtEDate.Text + "DD/MM/YYYY"
End If
txtEDate.Text = dhLastDayInMonth()
End Sub
Это, по-видимому, потому, что строка 'dtmDate = Date' всегда выполняется в вашем случае? В любом случае попробуйте [встроенное решение] (https://support.office.com/en-us/article/EOMONTH-function-1525129b-fafb-44fc-90cd-4bea29ddda57). – GSerg
Согласен с @Gserg. Попробуйте дважды проверить свой ввод. Если это так, как вы его написали, я не думаю, что Excel или VBA распознают этот формат как дату. – L42
Я проверил ваш код и не смог воспроизвести вашу проблему. Код работал должным образом. –