根据userform中另一个文本框中的日期在文本框中获取正确的状态

问题描述 投票:0回答:1

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

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

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

2个文本框是excel中DB工作表的一部分,其中“成员资格状态”位于G列,“付费打开”位于H列。

任何帮助将不胜感激。

先感谢您

excel vba
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.