2017-07-03 6 views
1

なぜこのコードでは、変数「Duracao」(期間)が行11にのみ書き込まれ、12と13では書き込まれませんか? https://i.stack.imgur.com/Z6LJw.pngなぜこのコードはテーブルの最初の行に変数を書き込むだけですか?

基本的に、私は各ヘリコプターに対して、開始日と終了日を持つ複数のジョブを持っており、各ジョブの所要時間(日数)を取得したいと考えています。

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 

答えて

0
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 
+0

私はすでに行っていますが、動作しません。 「実行時エラー1004:アプリケーション定義またはオブジェクト定義エラー」というエラーが表示され、最初のループが2番目のステップに進まないようにします。 – MiguelLeal

+0

@MiguelLealこれは、最初の行だけを書くという現在の問題を解決します。あなたのデータには、有効期限ではないいくつかのセルが「日付」であると仮定するなど、他の問題がなければなりません。他にもあるかもしれない。 –

関連する問題