Excel 2013 64 бит – Пользовательская форма VBA – добавьте 28 дней до даты текстового поля и отобразите в другом текстовом поле

В моей Userform у меня есть текстовое поле «ADD_Inc_DATE_TXT», которое пользователь вручную вводит в дату инцидента.

У меня есть еще одно текстовое поле «TxT_SWIRL_DueDate», которое должно отображать результат добавления 28 дней к дате, введенной в текстовое поле «ADD_Inc_DATE_TXT», или даже просто добавить 1 месяц к дате инцидента.

Я пробовал это в модуле с именем «Mod_SWIRL_Due_Date»:

Sub SWIRL_ExpiryDate() TxT_SWIRL_DueDate = CDate(ADD_Inc_DATE_TXT) ADD_Inc_DATE_TXT = DateAdd("m", 1, ADD_Inc_DATE_TXT) End Sub 

Но это, похоже, ничего не делает.

Я хотел бы, чтобы «TxT_SWIRL_DueDate» отображал дату истечения срока действия, когда было выбрано текстовое поле «ADD_INC_Time_TXT».

И в ожидании того, что Пользователь изменит дату инцидента, я бы хотел, чтобы он обновил TxT_SWIRL_DueDate с измененной датой.


Дополнительная информация: я включил ниже весь код, который у меня связан с датами. У меня есть 4 Date Pickers / Popup Calendars … и ни одна из дат не появляется в формате dd / mm / yyyy. (имея некоторую проблему с помещением кода в «образец кода»)

  Private Sub Calendar1_Click() ADD_Inc_DATE_TXT.value = CalendarForm.GetDate If IsDate(ADD_Inc_DATE_TXT.Text) Then Me.LBL_Inc_Day_Type.Caption = Format(ADD_Inc_DATE_TXT.Text, "ddd") End If If IsDate(ADD_Inc_DATE_TXT.Text) Then Me.ADD_Inc_DATE_TXT.Text = Format(ADD_Inc_DATE_TXT.Text, "dd/mm/yyyy") End If End Sub Private Sub Calendar2_Click() TXT_AssetMgr_DATE = CalendarForm.GetDate If IsDate(ADD_Inc_DATE_TXT.Text) Then Me.TXT_AssetMgr_DATE.Text = Format(TXT_AssetMgr_DATE.Text, "dd/mm/yyyy") End If End Sub Private Sub Calendar3_Click() TXT_LastUserDATE = CalendarForm.GetDate If IsDate(ADD_Inc_DATE_TXT.Text) Then Me.TXT_LastUserDATE.Text = Format(TXT_LastUserDATE.Text, "dd/mm/yyyy") End If End Sub Private Sub Calendar4_Click() ADD_Date_ServiceJobLogged_TXT = CalendarForm.GetDate If IsDate(ADD_Inc_DATE_TXT.Text) Then Me.ADD_Date_ServiceJobLogged_TXT.Text = Format(ADD_Date_ServiceJobLogged_TXT.Text, "dd/mm/yyyy") End If End Sub 

'Под Private Sub UserForm_Initialize () У меня есть следующий код, связанный с датой: Private Sub UserForm_Initialize ()

  Me.ADD_Date_Recorded_TXT.value = Format(Now, "dd/mm/yyyy") ' this works perfectly (correct format is returned) Me.ADD_Time_Recorded_TXT.Text = Format(Now(), "HH:mm") 

'*** Примечание: моя системная дата – dd / mm / yyyy, а в ячейках таблицы формат – dd / mm / yyyy

Используйте этот код в модуле формы формы (щелкните правой кнопкой мыши текстовое поле, «Просмотреть код»):

 Private Sub ADD_Inc_DATE_TXT_AfterUpdate() TxT_SWIRL_DueDate.Value = Format(DateAdd("m", 1, CDate(ADD_Inc_DATE_TXT.Value)),"dd/mm/yyyy") End Sub 

Я рекомендую использовать событие AfterUpdate, поскольку событие Change срабатывает каждый раз, когда изменяется значение в текстовом поле – например, также при наборе текста. Это срабатывает только тогда, когда пользователь завершил ввод текста и перешел к следующему тиму в форме (щелчок в другом месте).

Также рассмотрите возможность использования какой-либо формы контроля даты вместо управления текстовыми полями. Их довольно много, и в зависимости от используемой вами версии Excel вы можете использовать только некоторые из них.

  • Отсутствует свойство Excel VBA «AxisBetweenCategories» в ChartSpace
  • Удалите всю строку на основе дубликата в ячейке без той, которая имеет конкретное значение ячейки
  • Форма Показать метод в случае workbook_open в ThisWorkbook ломает фокус
  • Закрыть пользовательскую форму с помощью myForm.Скрыть или разгрузить меня
  • Пользовательская форма VBA: доступ к различным диаграммам в зависимости от Combobox
  • Передача данных между UserForms
  • Форма входа в Excel VBA с сохраненными паролями в базе данных Access
  • Переместить строку из пользовательской формы в активную ячейку, которая называется формой
  • Добавление изображения в рабочий лист из пользовательской формы (excel vba)
  • VBA- Итерирование по строковым значениям в массиве и идентификация, если они равны определенному тексту
  • VBA - определение пользовательской формы для последующего вызова
  • Interesting Posts

    Запуск макроса с рабочего стола, скрытый & с минимальным воздействием системы

    Excel VBA Range.AutoFilter фильтрация для знака равенства ("=")

    Печать двумерного массива в поле сообщения – Excel VBA

    динамическая область печати строк Excel VBA

    Невозможно использовать переменную из поля ввода в других подмножествах в одном модуле

    VBA Добавление приложения с использованием IF Formula

    Добавление имени листов одной книги в поле со списком другой книги

    Использование функции при назначении формулы

    Извлечение диаграмм из документов Excel с использованием POI или HSSF?

    Таблица сводных данных Excel с использованием столбца даты для фильтрации результатов

    запуск макроса в другом файле

    Получение ошибки несоответствия типа при установке Worksheet.Name на cell.value в VBA

    Использовать расчетную ссылку на ячейку в формуле

    Запуск макросов нескольких событий

    VBA, ячейка goto с определенным значением (тип: дата)

    Давайте будем гением компьютера.