Получить правильный статус в текстовом поле на основе даты из другого текстового поля в пользовательской форме

Это моя первая публикация здесь, и я новичок в VBA.

Чего я пытаюсь добиться, так это установить правильный статус членства из списка из 3 возможностей; Активен, просрочен или платеж не произведен. Это основано на дате, введенной в другое текстовое поле под названием «Оплачено». Это 12-месячное членство, поэтому:

Если введенное или отображаемое значение даты в текстовом поле «Оплачено» < сегодняшней даты, тогда текстовое поле «Статус членства» регистрируется/отображается как «активное». Если в текстовом поле «Оплачено» > сегодняшняя дата, то текстовое поле «Статус членства» регистрируется/отображается как «истек срок действия». Если текстовое поле «Оплачено» пусто, то в текстовом поле «Статус членства» отображается/регистрируется «Платеж не произведен».

Два текстовых поля являются частью рабочего листа БД в Excel, при этом «статус членства» находится в столбце G, а «Оплачено» — в столбце H.

Любая помощь будет принята с благодарностью.

заранее спасибо

Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
0
0
46
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как насчет следующего, он проверит последнюю строку с данными в столбце A, а затем перейдет от строки 2 к последним проверочным значениям в столбце H (оплачивается) и обновит столбец G (статус членства) до соответствующего значения:

Sub UpdateStatus()
Dim ws As Worksheet: Set ws = ThisWorkbook.Worksheets("DB")
'declare and set the worksheet you are working with, amend as required
LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
'get the last row with data on Column A

For i = 2 To LastRow
'loop from row 2 to last row
    If ws.Cells(i, "H").Value = "" Then ws.Cells(i, "G").Value = "No Payment Made"
    'if nothing under Paid On then "No Payment Made"
    If ws.Cells(i, "H").Value < Now() And ws.Cells(i, "H").Value <> "" Then ws.Cells(i, "G").Value = "Active"
    'if Paid On < Today then "Active"
    If ws.Cells(i, "H").Value > Now() Then ws.Cells(i, "G").Value = "Expired"
    'if Paid On > Today then "Expired"
Next i
End Sub

Привет Xabier, Спасибо за ваш быстрый ответ. Кроме того, как мне теперь отображать статус членства в текстовом поле моей пользовательской формы? Нужно ли указывать «me.membershipstatus.value=(укажите значение здесь)».

Alex Da 28.02.2019 00:51

Другие вопросы по теме