为什么这个代码只把variables写入表的第一行?

为什么这个代码只在第11行写入variables“Duracao”(持续时间),而不是在第12和第13个写入variables? 你可以在这里看到excel表格的图像: https : //i.stack.imgur.com/Z6LJw.png

基本上,我为每架直升机开始和结束date的几个工作,我想得到每个工作的时间(天)。

Sub EscalaDinâmicaHTA() Dim NumHelis As Integer Dim DataInicio As Date Dim DataFim As Date Dim ContData As Double Dim LinHeliInicial As Integer Dim i As Integer Dim j As Integer Dim k As Integer NumHelis = Worksheets(1).Range("B8").Value LinHeliInicial = 11 LinTotal = LinHeliInicial + NumHelis - 1 i = 2 j = 3 k = 4 Do While LinHeliInicial <= LinTotal Do While i < 26 And j < 27 And k < 28 DataInicio = Worksheets(1).Cells(LinHeliInicial, i).Value ContData = DateValue(DataInicio) ContData = Val(ContData) DataFim = Worksheets(1).Cells(LinHeliInicial, j).Value DataFim = DateValue(DataFim) Duracao = DataFim - DateValue(DataInicio) Worksheets(1).Cells(LinHeliInicial, k).Value = Duracao + 1 Duracao = ContData + Duracao Duracao = Val(Duracao) ContData = ContData - 43072 Duracao = Duracao - 43072 k = k + 3 j = j + 3 i = i + 3 Loop Do While ContData <= Duracao Cells(LinHeliInicial, ContData).Interior.ColorIndex = 4 ContData = ContData + 1 Loop LinHeliInicial = LinHeliInicial + 1 Loop End Sub 

  i = 2 j = 3 k = 4 Do While LinHeliInicial <= LinTotal Do While i < 26 And j < 27 And k < 28 

您需要在LinHeliInicial每次迭代中重新初始化i, j, k 。 把上面几行的顺序切换成这样:

  Do While LinHeliInicial <= LinTotal i = 2 j = 3 k = 4 Do While i < 26 And j < 27 And k < 28