首页 > 解决方案 > 计算我们增加给定日期范围的次数

问题描述

我想计算我移动日期(向前)的次数(给定日期范围),同时给定一个间隔,比如说6 个月


例子:

范围:

开始日期:2019/08/05

结束日期:2020/08/05

间隔: 6个月

对于这种情况,输出 = 2


我想在特定的单元格中打印我想要的输出。

我想使用以下语法构建 VBA:

DateAdd(间隔,数字,日期)

Private Sub CommandButton1_Click()
    Dim FirstDate As Date    ' Declare variables.
    Dim IntervalType As Integer
    Dim Number As Integer
    Dim EndDate As Date
    Dim TempDate As Date

    Dim i As Integer

    IntervalType = "m" ' "m" specifies MONTHS as interval.

    FirstDate = Cells(1, 1).Value
    EndDate = Cells(1, 2).Value
    Number = Cells(1, 3).Value  ' "Number" For the syntax DateAdd.

    i = 1
    Do Until TempDate = EndDate
        TempDate= DateAdd(IntervalType, Number, FirstDate)
        i = i + 1
    Loop
    Range("D1").Value = i
End Sub

但我收到了这个错误:

VBA 错误

标签: excelvbaloopsexcel-formula

解决方案


您收到的错误是因为您试图将 String 分配给 Integer 数据类型。更改IntervalType为字符串。

Sub DateTest()
    Dim FirstDate As Date    ' Declare variables.
    Dim IntervalType As String
    Dim Number As Integer
    Dim EndDate As Date
    Dim TempDate As Date
    Dim i As Integer

    IntervalType = "m" ' "m" specifies MONTHS as interval.
    FirstDate = Cells(1, 1).Value
    EndDate = Cells(1, 2).Value
    Number = Cells(1, 3).Value  ' "Number" For the syntax DateAdd.

    ' If number is not greater than zero an infinite loop will happen.
    If Number <= 0 Then
        MsgBox "Number needs to be greater than 0", vbCritical
        Exit Sub
    End If

    i = 1
    Do Until TempDate = EndDate
       If i <= 1 Then
           TempDate = DateAdd(IntervalType, Number, FirstDate)
       Else
           TempDate = DateAdd(IntervalType, Number, TempDate)
        End If
        i = i + 1
        Debug.Print i
    Loop
    Range("D1").Value = i - 1
End Sub

此外,您正在运行一个无限循环,其中 TempDate 总是从FirstDate变量循环。

此外,如果您Number小于或等于零,那么您将获得无限循环。

此外,Else摆脱了溢出错误。没有它,TempDate每次循环后都会重置。


推荐阅读