Используя следующий код, я увеличиваю значение даты, отображаемой в TextBox с помощью SpinButtons.Excel VBA Userform - Как увеличить/уменьшить дату на один месяц
MainUserForm_Initialize()
DateTextBox.Value = Format(Date, "dd-mm-YYYY")
...
End Sub
'Add one day when spinning up.
Private Sub SpinButtonDate1_SpinUp()
With DateTextBox
.Value = Format(DateAdd("d", 1, .Value), "dd-mm-yyyy")
End With
End Sub
'Remove one day when spinning down.
Private Sub SpinButtonDate1_SpinDown()
With DateTextBox
.Value = Format(DateAdd("d", -1, .Value), "dd-mm-yyyy")
End With
End Sub
Проблема заключается в том, если бы я прясть вниз 11-07-2015, оно идет от 12-07-2015 до 06-12-2015 вместо 11-07-2015. Почему это? (У меня такая же проблема при увеличении значения. Даты приведены лишь в качестве примера.)
Даты «американизируются» в VBA и интерпретируются как mm/dd/yyyy. Я предполагаю, что .Value - это не то, что вы ожидаете (я знаю, что вы применяете «Формат», но формат просто изменяет то, как даты визуализируются, а не интерпретируются фактически). Посмотрите на функцию DateSerial (http://www.techonthenet.com/excel/formulas/dateserial.php) – sous2817
Установлены ли в ваших региональных настройках порядок дат MM/dd/yyyy? Это вызовет описанную вами проблему и смущает меня, почему вы хотите отображать даты в формате dd-mm-yyyy. – Rory