For循环功能将不起作用,但会给出相同的结果而没有任何消息传递错误

时间:2019-05-17 07:21:11

标签: excel excel-2010

Once the date filter in column L is applied then J1 counts the number of items visible. 在下面提供的代码中,我正在尝试一个日期循环,在该循环中,我可以返回过去并查看特定的月份。例如,查看我可能正在查看的月份的前一个月,依此类推。

我尝试制作小的子宏,一旦主宏运行完毕,我就会调用这些子宏,但是我无法将它们放在一起,以便依次调用小宏并依次执行。

Option Explicit

Sub trial_trial_Table()

    Dim StartDate As Long, EndDate As Long, mois As Long, nextmonth As Long, z As Long, x As Long, i As Long

    z = StartDate
    StartDate = DateSerial(Year(Date), Month(Date) - 1, 1)
    x = EndDate
    EndDate = DateSerial(Year(Date), Month(Date) - 0, 0)

    z = 1

    For z = StartDate - 1 To StartDate

        z = z - 1

        x = 0

        For x = 0 To 12 'EndDate

            x = x - 1

            StartDate = DateSerial(Year(Date), Month(Date) - 1, 1) 'The first day of the previous month:
            EndDate = DateSerial(Year(Date), Month(Date) - 0, 0) 'The last day of the previous month:

            Sheets("Essais").Select

            ActiveSheet.Range("$A$1:$M$4822").AutoFilter Field:=12, _
                                                    Criteria1:=">=" & StartDate, _
                                                    Operator:=xlAnd, _
                                                    Criteria2:="<=" & EndDate
        Next x

    Next z

End Sub

我希望宏起作用。如果可以的话,请帮忙。

1 个答案:

答案 0 :(得分:0)

不确定,您要完成什么。如果要在另一个子目录中调用“小”子目录,可以使用以下命令调用:

Call NameOfSmallSub()

这样,您可以连续调用任意数量的宏。

一些提示可以使您的代码继续运行:

初始化时,每个long变量的值均为0(Dim命令)。因此,在初始化后立即将StartDate分配给x时,您可以只写“ x = 0”。由于此后您将另一个值设置为x,而没有在中间使用x,因此根本不需要此分配。

此外,当您从数字中减去0时,对它没有影响。因此,与其说“ Month(Date)-0”,不如说是“ Month(Date)”。我不确定,您对日期为“ 0”的DateSerial返回的期望是什么。我建议您调试代码行并观察所有变量以查看实际发生的情况。

您的循环将永远运行,因为您每次都会减小循环变量x。您的循环永远不会那样结束。但是您到底需要什么循环呢?

看来,您对vba脚本并不熟悉。也许即使没有vba脚本,也可以在excel中实现所需的功能?我会问一个新问题,并描述我想要拥有的东西,并寻求实现该目标的好方法。

我希望这会有所帮助。