Excel VBA Userform – Как увеличить / уменьшить дату на один месяц
Используя следующий код, я увеличиваю значение даты, отображаемой в TextBox с помощью SpinButtons.
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. Почему это? (У меня такая же проблема при увеличении значения. Даты приведены только в качестве примера.)
- Excel VBA UserForm блокирует лист
- Excel VBA Userform Listbox Динамическое контекстное меню с использованием метода .OnAction
- Измените форму пользователя с помощью защищенных паролем надстроек
- VBA. Создайте миниатюру в Loadpicture () в пользовательской форме.
- Ячейка, подключенная средствами управления, продолжает терять формулу
- Элементы списка combobox Userform + сохранять значения пользовательской формы как варианты в VBA Excel
- Добавление изображения в рабочий лист из пользовательской формы (excel vba)
- excel userform - переменная set / reset для определения / использования кадра
- Excel VBA Userform
- Как настроить мой GIF, когда я запускаю пользовательскую форму? (VBA) ,
- Автоматическое открытие нескольких пользовательских форм
- Link Combobox с текстовым полем в vba Excel
- Назначьте функцию VBA с нажатием кнопки динамически созданной кнопки в Excel Userform
У меня есть такая же проблема, если я настрою свой региональный формат для США. Попробуйте это исправление, которое должно работать независимо от ваших региональных настроек:
'Add one day when spinning up. Private Sub SpinButtonDate1_SpinUp() With DateTextBox .Value = Format(GetDateFromUK(.Value) + 1, "dd-mm-yyyy") End With End Sub 'Remove one day when spinning down. Private Sub SpinButtonDate1_SpinDown() With DateTextBox .Value = Format(GetDateFromUK(.Value) - 1, "dd-mm-yyyy") End With End Sub Function GetDateFromUK(sDate As String, Optional sSeparator As String = "-") As Date Dim vParts vParts = Split(sDate, sSeparator) GetDateFromUK = DateSerial(vParts(2), vParts(1), vParts(0)) End Function