Vba 在这种形式下是否可以使用nexted循环?

Vba 在这种形式下是否可以使用nexted循环?,vba,excel,Vba,Excel,我花了几天的时间来解决这个问题。我试图做的是取一个日期(当前_日期)并将其与一个列表(大约150个值,GRD日期)进行比较,然后返回当前日期大于的数字。然后应将其打印出来。完成后,当前日期移动到下一个日期,整个过程重复 Sub GRD() Dim Current_date As Long Dim GRD_Count As Long Dim Count As Long Dim g As Long Dim GRD_end_date As Long GRD_Count = 0 Count = 10

我花了几天的时间来解决这个问题。我试图做的是取一个日期(当前_日期)并将其与一个列表(大约150个值,GRD日期)进行比较,然后返回当前日期大于的数字。然后应将其打印出来。完成后,当前日期移动到下一个日期,整个过程重复

Sub GRD()

Dim Current_date As Long
Dim GRD_Count As Long
Dim Count As Long
Dim g As Long
Dim GRD_end_date As Long

GRD_Count = 0
Count = 10
g = 10

Do Until Worksheets("ABC").Cells(Count, 14).Value = ""

    Current_date = Worksheets("ABC").Cells(Count, 14).Value

        Do Until Worksheets("ABC").Cells(g, 3).Value = ""

            GRD_end_date = Worksheets("ABC").Cells(g, 9).Value

                If Current_date > GRD_end_date Then
                    GRD_Count = GRD_Count + 1

                Else: GRD_Count = GRD_Count

                End If


            g = g + 1


        Loop

    Worksheets("ABC").Cells(Count, 16).Value = GRD_Count
    Count = Count + 1
Loop



End Sub
它给我的所有日期的值都是1,即使这应该是当前第一个_日期的值


有人有什么想法吗?

从我看到的情况来看,每次迭代都不重置GRD\u计数,在开始循环之前初始化它,在循环中,当curr\u date>GRD\u end\u date时,将它增加1,或者保持不变(这是redundent,但现在不终止)。在打印完GRD_count=0后,在循环到下一行之前,尝试添加一个GRD_count=0。

还不确定,但什么是GRD日期?这是一种阳历吗?为什么要用long存储日期?也许使用Cdate并将它们存储在日期变量中——我认为这将使Equality运算符更精确。另外,我不确定你的GRD_计数代表什么,它是不是一个计数器,用来计算你在当前日期中通过了多少GRD日期?或者它是一个代表其他事物的全局变量?如果它是第一个,那么你需要每一个loopAvishay重新初始化它,GRD_日期也是我指的表单上的日期。没什么特别的。我有一份大约150个这样的日期的清单。我已将日期变量更改为您建议的日期。GRD_计数是指当前_日期之前的GRD_日期数。我根据所有这些GRD日期运行当前日期,并打印一个数字(GRD_计数)。然后我移动到下一个当前日期,剩余GRD计数并重复。我希望这会有所帮助。从我所看到的情况来看,每次迭代都不重置GRD_计数,而是在开始循环之前初始化它,在循环中,当curr_date>GRD_end_date时,将它增加1,或者保持不变(这是redundent,但现在不需要了)。打印完后,在循环到下一行之前,尝试添加一个GRD_count=0。啊,我已经修复了它。我真不敢相信我错过了。我需要重置GRD计数和g值。@AvishayCohen或lordf,你能给出答案并接受吗?帮助我们寻找未回答的问题。