计算未来的服务日期

时间:2015-02-25 13:16:45

标签: excel vba excel-vba

我一直在研究VBA宏,它接受车辆服务,数据输入页面的MOT日期将它们插入另一张纸上的新行,并在我输入的设定间隔时间内计算未来的服务日期。这一切都很好,它只是我遇到麻烦的下一部分。然后,我需要将这些日期添加到日程表中。

我尝试过设置嵌套的Do While循环,但我无法使其正常工作。我已经做了一个简单的例子,说明了我要做的事情(链接如下)。

红色是手动输入的数据。黄色是第一个宏产品,新行包含复制日期,橙色计算未来日期。绿色是插入的新行(我必须这样做)但是我需要将符号插入到新行中。

enter image description here

这是我从数据库中将服务日期输入计划的基本代码。

x = 1
y = x + 1
z = 16
'my data starts in C6R16 and I have 5 dates (hence to 21)
Do While z < 21
'Have a shedule for the whole year so 53.
    Do While x < 53
'If functions to locate which week the event is located
    If Worksheets("Dates Input").Cells(6, z).Value > Worksheets("Maintenance Shedule").Cells(3, x) Then
        If Worksheets("Dates Input").Cells(6, z).Value < Worksheets("Maintenance Shedule").Cells(3, y) Then
'Quick location of the lowest empy cell. The others will be full of data from prevous entries.
                Range("F9:F10").Select
                Do While Not IsEmpty(ActiveCell)
                    ActiveCell.Offset(1, 0).Select
                Loop
'Move my active cell to the correct place
            ActiveCell.Offset(-1, (3 + x)).Select
            ActiveCell = "/"
        Else
        End If
'Move to the next set of dates in shedule
    x = x + 1
    Loop
'move to next service date
z = z + 1
Loop

除此之外,我需要添加(我假设)一个If语句来检查同一周内是否有MOT(M)和服务(/),以便一个人不删除另一个

非常感谢任何指针和帮助。

1 个答案:

答案 0 :(得分:0)

x和z是一个计数器。 我建议使用

For x = 1 To 21
Next

代替。这似乎不是你的问题。 <击>的

<击>
Do While Not IsEmpty(~~~~~~)

实际上意味着在单元格为空时执行。