根据日期从用户表单中的另一个文本框中获取文本框中的正确状态

时间:2019-02-27 10:01:26

标签: excel vba

这是我第一次在这里发帖,我是VBA的新手。

我要实现的目标是从3种可能性的列表中设置正确的会员资格;有效,已过期或未付款。这基于在另一个名为“付费日期”的文本框中输入的日期。这是12个月的会员资格,所以:

如果输入或显示的“付费日期”文本框日期值是<今天的日期,则“会员资格”文本框将注册/显示为“活动”。 如果“付费日期”文本框是>今天的日期,则“会员身份”文本框将注册/显示为“过期”。 如果“付款人”文本框为空,则“会员身份”文本框将显示/注册“未付款”。

这两个文本框是excel中数据库工作表的一部分,其中“成员身份”位于G列中,“付费状态”位于H列中。

任何帮助将不胜感激。

提前谢谢

1 个答案:

答案 0 :(得分:0)

接下来,它将检查列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