使用VBA检查单元格是否包含日期,如果包含日期,则将日期提前一个月

使用VBA检查单元格是否包含日期,如果包含日期,则将日期提前一个月,vba,excel,Vba,Excel,我有一列数据(C),其中有许多单元格包含日期。我试图创建一个宏,检查每个单元格是否包含日期,然后将日期提前到月份。我有将日期提前一个月的代码,它可以正常工作,但我不确定如何用一个动态范围替换该范围,以评估列C中的所有单元格。如果可能,我还希望消除循环的需要。这是我到目前为止所拥有的 Sub IncreaseMonth() Dim dDate As Date Dim NumberofTasks As Integer NumberofTasks = ThisWorkb

我有一列数据(C),其中有许多单元格包含日期。我试图创建一个宏,检查每个单元格是否包含日期,然后将日期提前到月份。我有将日期提前一个月的代码,它可以正常工作,但我不确定如何用一个动态范围替换该范围,以评估列C中的所有单元格。如果可能,我还希望消除循环的需要。这是我到目前为止所拥有的

Sub IncreaseMonth()
    Dim dDate As Date
    Dim NumberofTasks As Integer
        NumberofTasks = ThisWorkbook.Worksheets("Dashboard").Range("Number_of_Tasks")
    Dim x As Integer

    For x = 1 To NumberofTasks
        dDate = Range("C30").Value
        Range("C30").Value = _
            DateSerial(Year(dDate), _
            Month(dDate) + 1, Day(dDate))
    Next x
End Sub

这段代码应该让您走上正确的轨道。我在这里做一些假设。首先,您有一个名为“任务数”的命名范围,您希望对其进行操作。其次,此范围内的所有值都是有效日期。如果值可能是无效日期(如空白),则应在设置值之前检查该日期

您还希望确保该月不会失效。增加12月份之后的月份将不是有效日期

Sub IncreaseMonth()
    Dim tempCell As Range
    For Each tempCell In ThisWorkbook.Worksheets("Dashboard").Range("Number_of_Tasks")
        tempCell.Value = DateSerial(Year(tempCell.value), Month(tempCell.value) + 1, Day(tempCell.value))
    Next tempCell

这段代码应该让您走上正确的轨道。我在这里做一些假设。首先,您有一个名为“任务数”的命名范围,您希望对其进行操作。其次,此范围内的所有值都是有效日期。如果值可能是无效日期(如空白),则应在设置值之前检查该日期

您还希望确保该月不会失效。增加12月份之后的月份将不是有效日期

Sub IncreaseMonth()
    Dim tempCell As Range
    For Each tempCell In ThisWorkbook.Worksheets("Dashboard").Range("Number_of_Tasks")
        tempCell.Value = DateSerial(Year(tempCell.value), Month(tempCell.value) + 1, Day(tempCell.value))
    Next tempCell

尝试下面的代码(我使用
DateAdd
函数将当前日期值增加1个月)

Sub-IncreaseMonth()
日期
模糊的任务数和长的任务数一样
暗x等长
带工作表(“仪表板”)
'我怀疑您想获取最后一行,其中包含C列中的数据
NumberofTasks=.Cells(.Rows.Count,“C”).End(xlUp).Row
对于x=1到NumberofTasks

如果是IsDate(.Range(“C”&x).Value),则“尝试下面的代码(我使用
DateAdd
函数向当前日期值添加1个月)

Sub-IncreaseMonth()
日期
模糊的任务数和长的任务数一样
暗x等长
带工作表(“仪表板”)
'我怀疑您想获取最后一行,其中包含C列中的数据
NumberofTasks=.Cells(.Rows.Count,“C”).End(xlUp).Row
对于x=1到NumberofTasks
如果是IsDate(.Range(“C”&x).Value),则'