Измените формат даты после загрузки ее в текстовое поле UserForm.
Вопрос
У меня есть пользовательская форма с текстовым полем.Когда текстовое поле инициализируется, оно заполняется фактической датой.Я хочу заполнить его пользовательским форматом даты = DD-MM-YYYY
Я написал код ниже, и что-то в нем не так, но я понятия не имею, что не так.Код имеет msgbox перед вставкой значения, MsgBox
показывает дату в произвольном формате, но когда она передается textbox.value
это как M/DD/YYY
.
Dim year As Long, year_control As Date
year = Format(Date, "yyyy")
year_control = Format(Date, "dd-mm-yyyy")
MsgBox (year_control)
textbox.Value = year_control
(...)
If year_control < "01-04-" & year Then
Me.Controls("rok1").Value = True
Else
Me.Controls("rok2").Value = True
End If
Решение
Вы не можете «отформатировать» переменную даты:
year_control As Date
year_control = Format(Date, "dd-mm-yyyy")
Приведенный выше код ничего не делает, поскольку переменная Date просто скрывает дату, а точнее, VBA хранит переменные Date как 64-битные (8-байтовые) числа с плавающей запятой IEEE, которые представляют даты в диапазоне от 1 января 100 до 31 декабря 9999 года и время от 0. :00:00 до 23:59:59.
Независимо от того, что вы делаете с этой переменной, она всегда будет отображать даты в соответствии с коротким форматом даты, распознаваемым вашим компьютером.Время отображается в соответствии с форматом времени (12-часовым или 24-часовым), распознаваемым вашим компьютером.
Таким образом, хотя вы можете изменить внутреннее значение, хранящееся в Date
Переменная, вы не можете сохранить ее формат внутри одной и той же переменной.
Однако вы можете отобразить его так, как хотите, внутри строковой переменной.Итак, если вы использовали:
Dim year As Long, year_control As Date
Dim strYear_control As string
year = Format(Date, "yyyy")
year_control = Format(Date, "dd-mm-yyyy")
strYear_control = Format(year_control , "dd-mm-yyyy")
MsgBox (strYear_control)
textbox.Value = strYear_control
Это должно работать так, как вы ожидаете.Как Format()
функция вернет вариант (строку), содержащий выражение, отформатированное в соответствии с инструкциями, содержащимися в выражении формата.
В качестве примечания вы также можете использовать
Format$(year_control , "dd-mm-yyyy")
так как это будет намного быстрее, вы также можете использовать FormatDateTime
чтобы отформатировать дату другими способами.